[PR]

右シフト演算子(>>)使用上の注意

戻る

exp1 >> exp2

 右シフト演算子が論理シフトとして実装されるか算術シフトとして実装されるかは処理系定義である。

 /* (-16 >> 2) → -4 */ (11110000 >> 2) → 11111100 // 算術シフトの場合。
 /* (-16 >> 2) → 60 */ (11110000 >> 2) → 00111100 // 論理シフトの場合。

 シフト後に最上位ビットが 1 となるか 0 となるかといったことを気にする煩わしさから逃れるためには exp1 に符号無し整数型を使う。
 符号無し整数型に対しては、算術シフトと論理シフトとの間に差異はない。
 符号無し整数型を右シフトした後の最上位ビットは、常に 0 である。

関連

printf, fprintf, sprintf 使用上の注意
1行注釈(//)使用上の注意
文字関数(isalnum, toupper など) 使用上の注意
論理右シフト代入演算子(>>>=)使用上の注意 - Java


Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp

あなたの作った歌をソフトウェアが人間の声で歌う! これぞ近未来のソフトウェア!
これを流行の一言ですませてはいけない! 技術的にもコンセプト的にも凄い!