【问题标题】:Bitwise masking位掩码
【发布时间】:2016-09-05 17:02:47
【问题描述】:

假设long int 是64 位类型的环境,假设我有一个long int = 0x0123456789ABCDEF,并且我想获取代表89 的字节。这条线可以工作吗?

n = (n >> (b << 3)) & 0xFF;

n 是long int,b 是我想要的字节。所以b 将是 3,将其向左移动 3 会将其乘以 8,将其更改为一个字节,因此移动应该看起来像这样 0x0123456789。使用 & 0xFF 是正确的掩码方式来获取最后一个字节吗?

【问题讨论】:

标签: c bit-manipulation


【解决方案1】:

是的,这是正确的方法。这个online example on ideone.com 按预期打印89

【讨论】:

  • 我看到你使用 long long n 而不是 long int n。有什么区别吗?
  • @JMei long long 保证至少为 64 位宽。 On some platforms like Windowslong 只有 32 位宽。
猜你喜欢
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-28
  • 2019-11-19
  • 1970-01-01
相关资源
最近更新 更多