Javaのコードに出てくる 0b1010 や 0xFF、見たことはあるけど意味がわからずにスルーしていませんか?
私も昔、16進数や2進数を「謎の暗号」と感じ、デバッグで真っ青になったことがあります。
本記事では、進数の基礎から書き方、変換、ビット演算とのつながりまで、小学生でも理解できる言葉と例で徹底解説します。
「数字の表し方を変えるだけでデバッグが10倍速くなった!」と感じる人も多数。
10進数の255は16進数で0xFF――たったこれを知るだけで、エラーログが一気に読みやすくなります。
さあ、Javaの進数表記をマスターして、数字の見方をアップグレードしましょう!
進数ってなに?2進・8進・10進・16進を比べてみよう
進数とは「いくつ集まったら次の桁に繰り上がるか」を決めるルールです。
10進数は0〜9で一桁。2進数は0と1だけ。ルールが違うだけで、表す量は同じ。だからコンピュータと話すときは2進数、人間と話すときは10進数が便利なのです。
具体例を見てみましょう!
- 10進数の「10」は2進数で「1010」、8進数で「12」、16進数で「A」。
- Javaでは 2進数は 0b、8進数は 0、16進数は 0x を頭につけます。
int bin = 0b1010; // 2進数 → 10
int oct = 012; // 8進数 → 10
int hex = 0xA; // 16進数 → 10
進数は「数え方の言語」。違いを知れば数字の暗号が一気に解読できます!
Javaで進数を書いてみよう!リテラルと読みやすい区切り
Javaでは進数ごとに書き方の“おまじない”が決まっています。
先頭のプレフィックス(接頭辞)を変えるだけで、コード内に好きな進数を直接書けるので、デバッグしやすくなります。
色々な進数を見てみましょう!
int dec = 255; // 10進数
int bin = 0b1111_1111; // 2進数(_ で桁区切りOK)
int oct = 0377; // 8進数
int hex = 0xFF; // 16進数
アンダースコアで桁区切りを入れると読みやすさUP!Java7以降で使用可。
プレフィックスと桁区切りを覚えれば、進数リテラルは怖くありません!
進数変換テクニック——10進⇔2進・16進はワンライナー!
変換は Integer
クラスのメソッドを使えば一瞬です。
手計算は大変。でもJavaには便利な変換メソッドが多数用意されています。
具体例を見てみましょう!
int num = 255;
String bin = Integer.toBinaryString(num); // → "11111111"
String hex = Integer.toHexString(num); // → "ff"
int back = Integer.parseInt("ff", 16); // → 255
基数(radix)を渡すと、好きな進数へ変換可能!
toBinaryString
/ toOctalString
/ toHexString
と parseInt(str, radix)
があれば、進数変換は自由自在!
ビット演算は2進数で考えるとスッキリ!マスク処理の例
ビット演算は「数字を0と1の旗で操作」するイメージです。
&(AND)や |(OR) はフラグ操作で大活躍。2進数表記なら“どのビットが立つか”がひと目でわかります。
int flagA = 0b0001; // 1
int flagB = 0b0100; // 4
int mask = flagA | flagB; // 0b0101 → 5
// マスク確認
if ((mask & flagA) != 0) System.out.println("A ON");
ビットごとにフラグをON/OFFできるので、設定管理が楽チン!
2進数はビット演算の“地図”。フラグ操作は2進数で見ると一気に理解が深まります!
ログに16進数を!デバッグ効率が劇的アップ
メモリアドレスやバイト列は16進数表示が圧倒的に読みやすい!
16進数は2進数4桁を1桁に圧縮した形。バイト単位で区切りやすく、人にも機械にも優しい表記です。
byte b = (byte)0xAF; // 1バイトの例
System.out.printf("0x%02X\n", b); // → 0xAF
%02X
フォーマット指定で、常に2桁の大文字16進表示!
デバッグで16進フォーマットを使えば、「値が合っているか」を一瞬で判断できます。
まとめ——進数の世界を味方にしよう!
今回学んだポイントは次の5つです。
- 進数の仕組み:2・8・10・16進数は「数え方の言語」
- Javaでの書き方:0b / 0 / 0x +アンダースコア区切り
- 進数変換メソッド:
toXxxString
とparseInt(str, radix)
- ビット演算と2進数:フラグ管理は2進数で“見える化”
- デバッグ表示:16進数フォーマットでログを読みやすく
進数をマスターすれば、数字が持つ情報を自由自在に操れます。次は実際のプロジェクトで使い、数字の世界をもっと楽しみましょう!