これが好きなのに、なぜ正しい答えが得られないのですか?
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にする方法はありません。