C ++ - 使用Bitmask从int获取值

时间:2017-12-01 05:39:30

标签: c++ binary integer bit-shift bitmask

我给出了在原始文件中呈现为int的32位数字。我需要一个值中最右边的8位(0-7),而另一个值需要下一个最右边的8位(8-15)。我被告知要使用位掩码和位移来排除这一切,但我不知道它如何与整数一起工作。

1 个答案:

答案 0 :(得分:1)

要只获得最右边的8位,你可以

int right8 = mynum & 0xFF;

因为您将前24位设为0,所以这些将设置为0,而底部8将保留其值,因为它们将以1为单位。

为了获得下一个最右边的8个,你需要在位掩码中将第8-15位设置为1,将所有其他设置为零。这将保持位置8-15中的相同位,但由于您需要它们位于最后8位,您可以简单地将它们向右移位8位。你可以用以下方法做到这一点。

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