プログラミングを学び始めた頃、
正直に言うと 進数(2進数・16進数)が一番よく分からなかった です。
コードは書けるのに、
- 16進数が出てくると一気に思考停止する
- バイナリ表記を見ると桁数で心が折れる
- デバッグログに
0xFFが出てくると逃げたくなる
そんな状態でした。
この記事は、
「進数が苦手だった自分が、最低限“怖くなくなる”までにやったこと」
をまとめた備忘録です。
なぜ進数が分からなかったのか
今振り返ると、理由はシンプルでした。
- 進数を「暗記しよう」としていた
- 変換の仕組みを理解しないまま問題を解いていた
- 実際に使う場面を想像できていなかった
特に 16進数 = 難しいもの という先入観が強かったです。
まず理解したのは「役割の違い」
あるとき先輩に言われた一言で腑に落ちました。
「人間用が10進数、機械用が2進数、橋渡しが16進数」
この整理だけで、かなり気が楽になりました。
- 10進数:人間が読む
- 2進数:コンピュータが処理する
- 16進数:2進数を人間が扱いやすくするための表現
「全部理解しなきゃ」ではなく
役割を分けて考える のがポイントでした。
16進数が実務で使われる理由を体感した
次にやったのは、
2進数と16進数を並べて見ること です。
例:
- 2進数:
11111111 - 16進数:
FF
これを見たとき、
「あ、そりゃ16進数使うわ…」
と素直に思いました。
- 桁が短い
- 見間違えにくい
- ログやアドレスで扱いやすい
理屈よりも、
視覚的な納得感 が大きかったです。
手計算は最低限でいいと割り切った
正直、今でも
16進数 → 10進数の計算を暗算でやれと言われたら無理です。
ただし、
- どういう変換が行われているか
- どの進数からどの進数に変わっているか
この流れさえ理解できていれば、
実務では十分 だと感じています。
学習時は、
- 少数の例だけ手計算
- あとはツールで確認
というスタンスに切り替えました。
進数変換ツールは「答え合わせ」に使う
進数学習で個人的に良かったのは、
自分の理解を確認するための変換ツール を使うことでした。
- 先に自分で考える
- その後で変換結果を確認する
この流れにすると、
「なんとなく合ってた」「ここが勘違いだった」
というポイントが見えてきます。
学習用途でシンプルに使える進数変換ツールもあるので、
必要に応じて活用するのはアリだと思います。
(自分は https://shinsu.jp/ を確認用に使っています)
進数は「理解する」より「慣れる」
進数に関して思うのは、
- 一気に理解しようとしない
- 苦手意識を持たない
- 使う場面で少しずつ慣れる
これが一番大事だということです。
今では、
- ログの16進数
- ビット演算
- カラーコード
を見ても、
以前ほど拒否反応はなくなりました。
まとめ
- 進数は暗記しなくていい
- 役割の違いを理解すると楽になる
- 16進数は2進数の「見やすい表現」
- ツールは理解確認のために使う
- 慣れれば怖くなくなる
進数でつまずいている人の、
気持ちが少しでも軽くなれば幸いです。