知らない方に詳しく解説!Javaのシフト演算子の使い方

javaのshift演算子
  • このエントリーをはてなブックマークに追加
  • Pocket

ビットのシフト演算とはデータのビットの並びを右や左にシフトすることを言う。このための演算子がJavaでは揃っている。IoT時代になるにつれて、必要な知識になっていくだろう。

このページではシフト演算子の使い方についてまとめた。参考にしていただきたい。

シフト演算子の使い方

Javaのシフト演算子は、ビットのシフト演算を行う演算子だ。ビットのシフト演算とは、データのビットの並びをまとめて右や左にシフトすることだ。シフトする方向だけでなくシフトするビットの数を指定することもできる。4ビット右にシフトする演算では、データの並びがすべて指定された右方向に4ビットずれる。

シフト演算子によって数値はどうなるか? 1ビット左にシフトするごと数値は2倍になる。1ビット右にシフトするごとに数値は半分になる。4ビット右シフトさせると、8分の1値になる。つまり、数値16を4ビット右シフトさせると、2になるということだ。

まずは、演算子の種類から見ていこう。

演算子の種類

シフト演算子には、3つの種類がある。次のセクションでこれらのひとつひとつの演算子の詳細を説明している。

  • 左シフト演算子 <<
  • 符号付右シフト演算子 >>
  • 符号無し右シフト演算子 >>>

では、その詳細を見てみよう。

左シフト演算子 <<

シフト演算子「<<」は整数のビットを左にシフトする。演算子「<<」のオペランド1のビットをオペランド2の数だけシフトする。

書き方の基本は簡単だ。

演算結果 = オペランド1 << オペランド2;

ビットが左にシフトされると、右端のビットはどうなるかというと、0で埋められていく。左端のビットは、捨てられていく。

シフト演算子

オペランド1がint型であれば、オペランド2の範囲は0から31になる。また、オペランド1がlong型であれば、オペランド2の範囲は0から63になる。

符号付右シフト演算子 >>

シフト演算子「>>」は、整数のビットを右に符号を付けてシフトする。>>演算子のオペランド1のビットをオペランド2の数だけシフトする。

書き方の基本は簡単だ。

演算結果 = オペランド1 >> オペランド2;

ビットが右にシフトされると、左端のビットはどうなるだろうか。符号付、つまり符号にしたがって埋められていく。左端のビットは符号によって、0(正の整数)または1(負の整数)になる。もし左端のビットが0ならば、0で埋められていく。もし左端のビットが1ならば、1で埋められていく。右端のビットは、捨てられていく。

shift演算子 >>>

オペランド2の範囲は、<<と同じだ。

符号無し右シフト演算子 >>>

シフト演算子「>>>」は整数のビットを符号無しで右にシフトする。>>>演算子のオペランド1のビットをオペランド2の数だけシフトする。

書き方の基本は簡単だ。

演算結果 = オペランド1 >>> オペランド2;

ビットが右にシフトされると、左端のビットはどうなるだろうか。符号無し、つまり符号に関係なく、左端のビットは0で埋められていく。右端のビットは、捨てられていく。

shift3

オペランド2の範囲は、<<と同じだ。

シフト演算子のサンプルプログラム

このサンプルプログラムは、前のセクションで例としてあげたビットの並びを4ビットシフトする演算をそのままプログラムに書いたものだ。実際のコードで書き方と演算結果を確かめよう。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] startBit0を宣言し、0b0011_1111_1111_1111_1111_1111_1111_1101を代入する。
  • [2] startBit1を宣言し、0b1011_1111_1111_1111_1111_1111_1111_1101を代入する。
  • [3] resultを宣言する。
  • [4] resultにstartBit1 << 4を代入する。
  • [5] resultを表示する。
  • [6] resultにstartBit1 >> 4を代入する。
  • [7] resultを表示する。
  • [8] valueにstartBit0 >> 4を代入する。
  • [9] resultを表示する。
  • [10] valueにstartBit1 >>> 4を代入する。
  • [11] resultを表示する。

まとめ

このページではJavaのシフト演算子についてまとめてきた。

すぐには使わないかもしれないが、ビット演算子と共になんとなくの全体像は把握しておくといいだろう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する