如果我这样做,为什么我得不到正确的答案:
long long number = 5500000000000000; // 16 digit number - 53bit
long long temp_number = 0;
temp_number = number >> 50;
printf("%d", temp_number);
答案是:4
那不正确,我希望它显示 5。
亲切的问候
如果我这样做,为什么我得不到正确的答案:
long long number = 5500000000000000; // 16 digit number - 53bit
long long temp_number = 0;
temp_number = number >> 50;
printf("%d", temp_number);
答案是:4
那不正确,我希望它显示 5。
亲切的问候
该数字的位模式是:
10011100010100011100010001010010000111100000000000000
右移 50 位时,您实际上是丢弃了 50 个最低有效位,因此您剩下:
100
巧合的是,这是4。
5500000000000000 = 0000 0000 0001 0011 1000 1010 0011 1000 1000 1010 0100 0011 1100 0000 0000 0000
当你移动 50 时,你会得到:
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0100 = 4
仅靠右移是无法达到 5 的。