初めに
Java silverではint型やbyte型の問題で2進数・8進数・16進数が出題されることがある。表記法も独特なので、今回はそれらを取り上げていく。なお、10進数から各値への変換は今回は解説しない。
2進数
0bまたは0Bを先頭につける。
例
0b100001011
8進数
0を先頭につける。
例
0222
なお,0827はコンパイルエラーになる。これは8進数の時に使える数字は0~7のためである。
16進数
0xまたは0Xを先頭につける。また16進数では桁ごとに 0 から 9 の数字と A(10)、B(11)、C(12)、D(13)、E(14)、F(15)を使う。
例
0x10B
ビット演算子とは
整数型の数値に対してビット単位で演算を行うための演算子。ビットとは2進数で表現される数値の値(0または1)のこと。主な演算子つぃて&,|,^が存在する。
&の使い方
2つの対応するビット値を比較し、両方のビットが1なら結果のビットは1。対象のビットが片方または両方とも0なら結果も0。
System.out.println(15 & 20);
結果
4
|の使い方
両方または片方のビットが1なら1。ともに0なら0が返される。
System.out.println(25 | 17);
^の使い方
両方のビットが異なれば1。
System.out.println(11 | 19);
結果
27
char型で使用する場合
char型はint型と互換性があるので、同様にビット演算子を使用できる。
System.out.println('c'| 'd');
このままだと難しいので一旦int型に直してみる。
System.out.println((int)'c');
System.out.println((int)'d');
結果
99
100
ここまで来れば同じように計算していけば良い。'c'|'d'の結果は以下のようになる。
結果
103
まとめ
- 2進数は先頭に0bまたは0Bをつける
- 8進数は先頭に0をつける
- 16進数は先頭に0xまたは0Xをつける
- &は両方のビットが1なら1、片方または両方とも0なら0を指定
- |は両方または片方のビットが1なら1、両方とも0なら0を指定
- ^は両方のビットが異なれば1を指定