64ビットのシフト演算

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
usagi
記事: 9
登録日時: 10年前

64ビットのシフト演算

#1

投稿記事 by usagi » 10年前

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)

usagi
記事: 9
登録日時: 10年前

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

#2

投稿記事 by usagi » 10年前

すみません。
解決しました。

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

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#3

投稿記事 by みけCAT » 10年前

コード:

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

解決したら、解決チェックをお願いします。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

usagi
記事: 9
登録日時: 10年前

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

#4

投稿記事 by usagi » 10年前

ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る