ページ 11

64ビットのシフト演算

Posted: 2015年1月06日(火) 14:00
by usagi
64ビットの変数をシフトするコードを教えてください。

uint64_t i;
i = (1 << 30);
i = (1 << 31);
i = (1 << 57);

上記のようなコードを書くと、

warning #68: integer conversion resulted in a change of sign
i = (1 << 31);
^

warning #63: shift count is too large
i = (1 << 57);
^
とエラー表示されてしまいます。

よろしくお願いします。

g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44)

Re: 64ビットのシフト演算

Posted: 2015年1月06日(火) 14:18
by usagi
すみません。
解決しました。

1に対して、シフトしてるからエラーなんですね。

Re: 64ビットのシフト演算

Posted: 2015年1月06日(火) 18:12
by みけCAT

コード:

i = ((uint64_t)1 << 31);
i = ((uint64_t)1 << 57);
と書くと良いでしょう。

解決したら、解決チェックをお願いします。

Re: 64ビットのシフト演算

Posted: 2015年1月09日(金) 09:14
by usagi
ありがとうございました。