use*_*033 2 c c++ bit-manipulation
我最近一直在阅读一些代码,并遇到了一些问题:
somevar &= 0xFFFFFFFF;
Run Code Online (Sandbox Code Playgroud)
所有位都打开的东西有什么意义; 它到底是不是只等于somevar?
Jas*_*n S 15
"somevar"可以是64位变量,因此该代码将提取底部的32位.
编辑:如果它是一个32位变量,我可以想到其他原因,但它们更加模糊:
实际上,如果somevar是类型int(32位整数),这将没有意义.但是,如果它是类型long(64位整数),那么这将掩盖值的上半部分(最重要的).
注意,long值不保证是64位,但通常是在32位计算机上.