二进制表示法,如何获得“相关位”?

时间:2018-08-29 08:50:29

标签: c++

在Google上有一些教程,但是大多数教程显示了如何打印数字的二进制表示并通过打印整个16/32位来做到这一点。

我的问题是您如何找出最重要的位1,然后与它后面的那些(本身包括在内)一起工作(不一定要打印出来)。

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