我试图了解如何使用按位AND提取单个字节的值。
我所拥有的是一个4字节的数组,并将最后2个字节转换为一个2字节的值。然后,我尝试从该2字节值中提取原始的单字节值。有关我的代码和值的屏幕截图,请参见附件。
我遇到的问题是我无法获取2字节值中最后一个字节的值。
我将如何使用Bitwise AND进行此操作?
谢谢你的帮助,
理查德·休斯
最佳答案
我遇到的问题是我无法获取2字节值中最后一个字节的值。
您的2字节整数由值3和4组成(因为您的指针指向a[1]
)。正如您在测试中已经看到的那样,可以通过应用掩码3
来获得0xFF
。现在,要获取4
,您需要删除低位并移位该值。在您的示例中,通过使用掩码0xFF00
,您可以有效地从16位数字中删除3
,但是将4
保留在2字节数字的高字节中,该值是1024 == 2^10
-第11位设置,它是第二个字节中的第三位(从最小代表数开始)
您可以将结果右移8位以得到4
,否则可以完全忽略掩码,因为仅向右移最低位将消失:
4 == ( x>>8 )
按位测试更有趣的结果,可以通过使用一个数字获得:
int x = 7; // or char, for what matters:
(x & 0x1) == 1;
(x & (0x1<<1) ) == 2; // (x & 0x2)
(x & ~(0x2)) == 5;
关于c++ - C++:按位与,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10373240/