我发现了一种变量,其值为INTEGER(0 ... 2 24 - 1)。一个让代码决定放置类型为uint32_t var的变量的人;并将结果与0xFFFFFF
放在一起这是怎么回事uint32_t& OxFFFFFF能够处理INTEGER的值(0 ... 2 24 - 1)?
据我所知,通过屏蔽0xFFFFFF,你可以使值全部为正(或?),但这是如何工作的,我想我错过了一个概念。
答案 0 :(得分:2)
使用0xffffff
进行屏蔽只能确保存储的值永远不会超出0..2 ^ 24-1范围。除了低24位之外的任何东西都将被丢弃。
例如,如果您具有值-1
并将其屏蔽,则它将以值0xffffff
结束。值已更改,但现在它在有效范围内。
答案 1 :(得分:1)
2**24-1
是16777215
(在这里,我使用**
进行取幂)。
0xFFFFFF
也是16777215
。
换句话说,它们是写出相同价值的两种方式。
当你AND
0xFFFFFF
时,你保留了24个最低有效位,并将其余部分设置为零。