-2

我正在尝试在 uint64_t 类型上使用按位运算符。当我运行它时,即使它需要 54 位(64-10 位)长,我也会得到 37(47 - 10)位的输出。我怎样才能解决这个问题?

uint64_t temp = addr; //(addr input - 11111111110100011010111011011111000101111001000)
temp = temp >> 10;
return temp; //returns 37 bits only as input is 47 bits.

输出:温度现在是 1111111111010001101011101101111100010

4

1 回答 1

1

temp是 64 位,因为这就是您声明它的方式。

当您打印它时,除非您指定希望它们显示在您的打印语句中,否则不会显示初始零。

尝试使用addr = 1000000000100000000010000000001000000000100000000010000000001000(或任何其他以 a 开头的 64 位数字1),您会看到。

于 2013-09-23T20:03:28.783 回答