「chmod 755 って数字の意味、なんとなくでしか分かっていない…」「#FF5733 ってどうやって色になるの?」そんなモヤモヤ、ありませんか? 😅
実は、2進数・16進数・8進数は、OSやCPU、ネットワークが「ネイティブに話す言語」です。CS(コンピュータサイエンス)の授業で一瞬だけ出てきて、試験が終わったら忘れた…という方も多いと思います。でも、実際の開発現場では毎日のように顔を出す概念なんですよね。
今回はこれらの数値表現(Number Systems) を、実務コードと一緒にサクッとおさらいしてみましょう! 🚀
🔢 そもそも、なぜ複数の数値表現があるの?

コンピュータが扱うのは究極的に「0と1」だけです。でも人間がそれをそのまま読むのは大変ですよね。そこで登場するのが次の3つです。
- ✅ 2進数(Binary):コンピュータが直接扱う形式。0と1だけで表現
- ✅ 16進数(Hexadecimal / Hex):2進数を人間が読みやすく圧縮した形式。0〜9+A〜Fを使う
- ✅ 8進数(Octal):主にUnixのパーミッション設定などで登場。0〜7を使う
イメージとしては、「コンピュータ語を人間語に翻訳するための3つの方言」と思ってもらえると分かりやすいです。
🐍 Pythonで変換してみよう
百聞は一見にしかず、Pythonで実際に変換してみましょう。
# 数値「255」を各進数で表現してみる
num = 255
print(bin(num)) # 2進数 → 0b11111111
print(oct(num)) # 8進数 → 0o377
print(hex(num)) # 16進数 → 0xff
# 逆に、各進数の文字列を10進数に戻す
print(int('11111111', 2)) # 2進数 → 255
print(int('377', 8)) # 8進数 → 255
print(int('ff', 16)) # 16進数 → 255
ポイントをまとめるとこんな感じです 👇
bin()・oct()・hex()で一発変換できるint(文字列, 基数)で逆変換(各進数 → 10進数)が可能- プレフィックスの
0b(2進数)、0o(8進数)、0x(16進数)も覚えておこう
💡 実務で登場するシーン3選
① chmod 755 のパーミッション設定
chmod 755 の「755」は8進数です。7 = 111(読み書き実行すべて許可)、5 = 101(読み・実行のみ)という2進数のビットフラグになっています。つまり、パーミッションを設定するたびにOctalを使っているんですよね。
② カラーコード #FF5733
Webの色は16進数で表現されています。#FF5733 は「赤=FF(255)、緑=57(87)、青=33(51)」というRGB値そのものです。Hexに慣れると、色を見ただけにRGB値がパッと分かるようになります 🎨
③ ビット演算でのフラグチェック
# 下位4ビットだけを取り出すビットマスク処理
permissions = 0b10110101 # 何らかのフラグ値
mask = 0x0F # 16進数表記(= 0b00001111)
result = permissions & mask # AND演算で下位4ビットのみ抽出
print(bin(result)) # → 0b101
ここが重要です ⚡ビット演算と16進数マスクの組み合わせは、組み込みシステムやネットワーク処理で頻繁に登場します。「& 0x0F」のような表記を見たら「下位4ビットを取り出している」と読めるようになると、コードリーディングの速度がグッと上がります。
まとめ
Binary・Hex・Octalは「一度覚えたら終わり」ではなく、日常の開発で何度も出会う基礎知識です。Pythonなら bin()・hex()・oct() と int() を使えば簡単に変換できるので、まずは手を動かして確認してみてください。
数値表現の「むずかしそう」が「なるほど!」に変わると、デバッグや設計の視野が一気に広がりますよ。ぜひ今日から試してみてください 😊





