Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;-使用位掩码从int获取值_C++_Binary_Integer_Bit Shift_Bitmask - Fatal编程技术网

C++ C++;-使用位掩码从int获取值

C++ C++;-使用位掩码从int获取值,c++,binary,integer,bit-shift,bitmask,C++,Binary,Integer,Bit Shift,Bitmask,我得到了一个在原始文件中呈现为int的32位数字。我需要一个值中最右边的8位(0-7),另一个值中需要下一个最右边的8位(8-15)。我被告知使用位掩蔽和位移位来排序,但我不知道它如何处理整数。要只得到最右边的8位,可以这样做 int right8 = mynum & 0xFF; 因为您要将前24位与0进行AND运算,所以这些位将设置为0,而底部8将保留其值,因为它们将与1进行AND运算 为了获得最右边的下一个8,您需要在位掩码中将位8-15设置为1,将所有其他设置为0。这将在位置8-

我得到了一个在原始文件中呈现为int的32位数字。我需要一个值中最右边的8位(0-7),另一个值中需要下一个最右边的8位(8-15)。我被告知使用位掩蔽和位移位来排序,但我不知道它如何处理整数。

要只得到最右边的8位,可以这样做

int right8 = mynum & 0xFF;
因为您要将前24位与0进行AND运算,所以这些位将设置为0,而底部8将保留其值,因为它们将与1进行AND运算

为了获得最右边的下一个8,您需要在位掩码中将位8-15设置为1,将所有其他设置为0。这将在位置8-15中保持相同的位,但是由于您需要它们位于底部8位,您可以简单地将它们位移到右侧8个位置。您可以通过以下操作来实现这一点

int next8 = myNum & 0xFF00;
int next8 = next8 >> 8;

建议进行编辑,以便准确掌握移位和遮罩的内容。对于将来有类似但不精确问题的提问者来说,这将使答案更加通用。或者,您可以先向右移动,然后用0xFF掩盖结果:
int next8=(myNum>>8)&0xFF