10進だけじゃ大損!Java進数の真実

Java_N進数 Java

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 / toHexStringparseInt(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つです。

  1. 進数の仕組み:2・8・10・16進数は「数え方の言語」
  2. Javaでの書き方:0b / 0 / 0x +アンダースコア区切り
  3. 進数変換メソッドtoXxxStringparseInt(str, radix)
  4. ビット演算と2進数:フラグ管理は2進数で“見える化”
  5. デバッグ表示:16進数フォーマットでログを読みやすく

進数をマスターすれば、数字が持つ情報を自由自在に操れます。次は実際のプロジェクトで使い、数字の世界をもっと楽しみましょう!

タイトルとURLをコピーしました