假设我有一个以这些位开头的长64位整数:
0100 0000 0110 1101 .... .... ....
我想要一个特定的整数来保存这个值:
0b10000000110
正如您所看到的那样,原始数字中的位2到12。
如何通过按位运算实现这一点呢?
答案 0 :(得分:0)
这样的事情应该有效:
uint64_t input = <0100 0000 0110 1101 .... .... ....>
uint64_t mask = (uint64_t)0x7FF << 52;
uint64_t output = (input & mask) >> 52;
0x7ff
是11位:11111111111
。将它向左移52位以使其达到您想要的位置,使用它来屏蔽输入值,并将返回值移回52位。