C++ - 使用位掩码从 int 中获取值
C++ - Using Bitmask to get values from an int
我在原始文件中得到了一个呈现为 int 的 32 位数字。我需要一个值中最右边的 8 位 (0-7),我需要另一个值中的下一个最右边的 8 位 (8-15)。有人告诉我使用位掩码和位移位来解决所有问题,但我不知道它如何处理整数。
要仅获取最右边的 8 位,您可以这样做
int right8 = mynum & 0xFF;
因为您要用 0 对前 24 位进行与运算,所以它们将设置为 0,而后 8 位将保留它们的值,因为它们将与 1 进行与运算。
为了获得最右边的下一个 8,您需要在位掩码中将 8-15 位设置为 1,将所有其他位设置为 0。这将在位置 8-15 保持相同的位,但由于您需要它们位于底部 8 位,您可以简单地将它们向右移动 8 个位置。您可以使用以下方法做到这一点。
int next8 = myNum & 0xFF00;
int next8 = next8 >> 8;
我在原始文件中得到了一个呈现为 int 的 32 位数字。我需要一个值中最右边的 8 位 (0-7),我需要另一个值中的下一个最右边的 8 位 (8-15)。有人告诉我使用位掩码和位移位来解决所有问题,但我不知道它如何处理整数。
要仅获取最右边的 8 位,您可以这样做
int right8 = mynum & 0xFF;
因为您要用 0 对前 24 位进行与运算,所以它们将设置为 0,而后 8 位将保留它们的值,因为它们将与 1 进行与运算。
为了获得最右边的下一个 8,您需要在位掩码中将 8-15 位设置为 1,将所有其他位设置为 0。这将在位置 8-15 保持相同的位,但由于您需要它们位于底部 8 位,您可以简单地将它们向右移动 8 个位置。您可以使用以下方法做到这一点。
int next8 = myNum & 0xFF00;
int next8 = next8 >> 8;