如何将c中变量的某些位复制到另一个变量?

时间:2014-04-12 05:05:33

标签: c++ c

假设我有一个以这些位开头的长64位整数:

0100 0000 0110 1101 .... .... ....

我想要一个特定的整数来保存这个值:

0b10000000110

正如您所看到的那样,原始数字中的位2到12。

如何通过按位运算实现这一点呢?

1 个答案:

答案 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位。

相关问题