-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.

出力: temp は現在 1111111111010001101011101101111100010 です

4

1 に答える 1

1

tempそれがあなたがそれを宣言した方法であるため、64ビットです。

印刷すると、印刷ステートメントで表示するように指定しない限り、最初のゼロは表示されません。

addr = 1000000000100000000010000000001000000000100000000010000000001000(または a で始まるその他の 64 ビット数値) で試してみると、1表示されます。

于 2013-09-23T20:03:28.783 に答える