2012-11-05 51 views
-1

爲什麼,如果我不喜歡這個,我沒有得到正確的答案:按位右移大量

long long number = 5500000000000000; // 16 digit number - 53bit 
long long temp_number = 0; 

temp_number = number >> 50; 

printf("%d", temp_number); 

答案是:4

這是不正確的,我想讓它顯示5。

此致

+3

什麼讓你相信答案應該是5? – driis

+0

如果我移位五十倍正確的二進制數字:10011100010100011100010001010010000111100000000000000 ..... err我休息我的情況,並刪除問題! – Christian

+0

移位不是十進制。 – 2012-11-05 17:40:48

回答

4

該號碼的位模式是:

10011100010100011100010001010010000111100000000000000 

當右移50個地方,你基本上是丟棄50個最顯著位,這樣你就只剩下:

100 

其中,巧合的是,4

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只有右移。