我发现一个类型的值为INTEGER的变量(0 ... 2 - 1)。一个让代码决定放置一个类型为uint32_t var的变量的人;并把这个结果与0XFFFFFFINTEGER(0..2 ** 24 - 1)是否是uint32_t&0xFFFFFF?
请问这是怎么uint32_t的& OxFFFFFF能够处理整数的值(0 ... 2 - 1)?
据我了解,有屏蔽0XFFFFFF您做出值全部为正(或?),但如何做这件事的工作,我想我错过这里的概念。
我发现一个类型的值为INTEGER的变量(0 ... 2 - 1)。一个让代码决定放置一个类型为uint32_t var的变量的人;并把这个结果与0XFFFFFFINTEGER(0..2 ** 24 - 1)是否是uint32_t&0xFFFFFF?
请问这是怎么uint32_t的& OxFFFFFF能够处理整数的值(0 ... 2 - 1)?
据我了解,有屏蔽0XFFFFFF您做出值全部为正(或?),但如何做这件事的工作,我想我错过这里的概念。
与0xffffff
掩蔽只可以确保,它永远不会存储的值是0..2^24-1范围之外。除了较低的24位以外的任何内容都将被丢弃。
如果您例如具有值-1
并对其进行掩码,则它将以值0xffffff
结束。值已更改,但现在它在有效范围内。
2**24-1
是16777215
(在这里,我用**
来指数)。
0xFFFFFF
也16777215
。
换句话说,它们是写相同的值的方法有两种。
当您AND
东西0xFFFFFF
,你保持24个最低有效位,并将其余设置为零。
由于有些人似乎无法接受它们是相同的,所以“保留最低有效24位”与“减少模2 ** 24”(假设为正值或无符号值)是相同的。 – 2012-02-06 14:34:58
这将有助于如果你说你正在谈论哪种语言... – 2012-02-06 11:45:59
@JonSkeet:它在C – heike 2012-02-06 11:47:36
什么是“INTEGER(0 ... 2(24) - 1))”意思/站立对于? – 2012-02-06 11:48:23