繁体   English   中英

从二进制数中获取最后5位二进制位?

[英]Get last 5 binary bits from a binary number?

我有一个二进制数(例如111001001)。 我想获得最后5位数(01001)。 我怎样才能做到这一点? 我想将每个数字存储到arrray然后用for循环获取值。 但还有更好的方法吗?

您可以通过屏蔽获得最后5位:

x = x & 0x1f;

如果您想处理这些位中的每一位,那么您可以在循环中单独测试它们,例如

for (i = 0; i < 5; ++i)
{
    if (x & (1 << i))  // if bit i is set
    {
        // do something for bit i = 1
    }
    else
    {
        // do something else for bit i = 0
    }
}

(注意:在这种情况下不需要先屏蔽。)

只需使用位掩码:

int val = value & 0x1F;

说明:

  1 1100 1001 ---> your value
  0 0001 1111 ---> the bitmask
       1    F ---> hexadecimal equivalent of the bitmask
  -----------
& 0 0000 1001 ---> value & bitmask

二进制&(AND)操作具有以下真值表:

┌─────╥───┬───┐
│ A&B ║ 0 │ 1 │
╞═════╬═══╪═══╡
│  0  ║ 0 │ 0 │
├─────╫───┼───┤
│  1  ║ 0 │ 1 │
└─────╨───┴───┘

只有值为1的位和位掩码在结果中变为1。 这有效地允许您控制要保留的值与值。

答案是number & 31

31 = 11111二进制

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM