在Google上有一些教程,但是大多数教程显示了如何打印数字的二进制表示并通过打印整个16/32位来做到这一点。
我的问题是您如何找出最重要的位1,然后与它后面的那些(本身包括在内)一起工作(不一定要打印出来)。
答案 0 :(得分:0)
您可以迭代这些位并检查每个位的值:
uint data = 0x4AC;
for (auto i = 1, c = 0; c < sizeof(uint)*8; i = i << 1, ++c)
{
if ((data & i) > 0)
{
std::cout << "bit " << i <<" is 1" << std::endl;
}
}
bit 4 is 1
bit 8 is 1
bit 32 is 1
bit 128 is 1
bit 1024 is 1