如果我这样做,为什么我得不到正确答案:
long long number = 5500000000000000; // 16 digit number - 53bit
long long temp_number = 0;
temp_number = number >> 50;
printf("%d", temp_number);
答案是:4
这不正确,我希望它显示5。
亲切的问候
答案 0 :(得分:4)
该数字的位模式是:
10011100010100011100010001010010000111100000000000000
当向右移动50个位置时,你基本上丢弃了50个最低有效位,所以你只剩下:
100
巧合的是,这是4。
答案 1 :(得分: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。