C - 使用BitMask从INT获取值



我给出了一个32位的数字作为原始文件中的int。我需要一个值的最右8位(0-7),我需要在另一个值的下一个最右边的8位(8-15)。有人告诉我使用位掩蔽和位转移来整理所有这些,但我不知道它如何与整数一起工作。

要仅获得8位,您可以做

int right8 = mynum & 0xFF;

因为您将前24位带有0,因此将其设置为0,而底部8将保留其值,因为它们将与它们一起使用。

为了获得下一个最初的8个,您需要将8-15的位设置为一个和另一个位置,将其设置为零。这将在8-15的位置上保持相同的位,但是由于您需要它们位于底部8位,因此您只需将它们移到右侧的8个位置即可。您可以通过以下内容做到这一点。

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

最新更新