計算ツール
数学情報基本情報プログラミング

進数変換 計算ツール|10進⇔2進⇔8進⇔16進を一括変換・実務ガイド

10進数を2進(binary)・8進(octal)・16進(hexadecimal)に瞬時に変換。カラーコード変換、UNIXパーミッション、メモリアドレス、IPv4/IPv6アドレスの2進展開まで幅広く対応します。基本情報技術者試験・応用情報技術者試験、組込みソフトウェア開発、ネットワーク設計、Web開発(CSSカラー)などで頻用される基礎概念を、情報処理推進機構(IPA)の公式試験基準に照らして解説します。

最終更新:2026-08-02/監修:計算ツールズ編集部

進数変換 計算機

計算式と基本概念

N進数の一般式

数値 = Σ(桁の値 × 基数の桁位置乗)

N進数(N-ary)は、N個の数字と桁位置の重みで数を表現する記数法です。基数(radix)がNなら、各桁は右から順に N⁰=1, N¹=N, N²=N², N³=N³... の重みを持ちます。10進数「1234」= 1×10³ + 2×10² + 3×10¹ + 4×10⁰ という位取り記数法は、2進・8進・16進でも同じ考え方が適用されます。

各進数の数字集合

2進(binary): 0, 1

8進(octal): 0, 1, 2, 3, 4, 5, 6, 7

10進(decimal): 0-9

16進(hexadecimal): 0-9, A(=10), B(=11), C(=12), D(=13), E(=14), F(=15)

16進では10〜15をA〜Fのアルファベットで表します。大文字・小文字どちらも許容されますが、可読性のためカラーコードでは大文字、URLエンコーディングでは小文字が主流です。

プログラミング言語での表記

C/C++/Java/JS: 2進 0b1010、8進 012 または 0o12、16進 0xAC

Python: 0b1010、0o12、0xAC。ビルトイン関数 bin()/oct()/hex()

HTML/CSS: 16進カラー #FF0000、URLエンコード %20 (空白)

2進・8進・10進・16進の違い

記数法基数1桁で表現できる値主用途2進換算
2進(binary)20-1CPU回路・機械語1ビット
8進(octal)80-7UNIXパーミッション3ビット
10進(decimal)100-9日常計算約3.32ビット
16進(hex)160-F(0-15)メモリ・カラー4ビット

2進数は桁数が長くなりがちなため、実務では4ビットを1桁の16進にまとめる、または3ビットを1桁の8進にまとめて表記します。CPUのメモリアドレスは32/64ビットで長いため、16進表記が世界的な実務標準です。

主要値の進数変換表(0〜32)

10進2進8進16進用途例
0000NUL文字
711177UNIX権限 rwx
810001081バイトの半分
10101012ALF(改行)
13110115DCR(復帰)
15111117F4ビット最大
1610000201016進の桁繰り上がり
321000004020空白文字
64100000010040@文字
1281000000020080ASCII最大の次
25511111111377FF1バイト最大
10241000000000020004001 KiB
655351111111111111111177777FFFF2バイト最大
104857610000000000000000000040000001000001 MiB
1677721511111111111111111111111177777777FFFFFFフルカラーRGB最大値

16進6桁(0xFFFFFF)がフルカラーの上限になるのは、RGB各成分が8ビット(0-255)ずつで合計24ビットのため。プロ用画像編集(Adobe Photoshop)では16ビット/成分の48ビット深度も扱えます。

ビット幅と扱える数値範囲

ビット16進表示無符号 最大値符号付き 範囲用途
4F15-8 〜 +7ニブル(半バイト)
8FF255-128 〜 +1271バイト・ASCII
16FFFF65,535-32,768 〜 +32,767Short整数
32FFFFFFFF約42億±約21億IPv4・Int32
64FFFFFFFFFFFFFFFF約1,844京±約922京Long整数・タイムスタンプ
128128桁分約3.4×10³⁸IPv6・UUID

変換の手計算方法

10進→2進 変換

10進を2で割り、商と余りを繰り返します。余りを下から順に並べたものが2進表記。例: 13 → 13/2=6余1 → 6/2=3余0 → 3/2=1余1 → 1/2=0余1 → 下から並べて1101

2進→10進 変換

各桁を「桁の値 × 2^位置」で加算。例: 1101 = 1×8 + 1×4 + 0×2 + 1×1 = 13

2進↔16進 変換

2進を右から4桁ずつ区切ると16進の1桁に対応。例: 11010110 → 1101/0110 → D/6 → D6。逆に16進の各桁を4桁の2進に展開すれば逆変換完了。

2進↔8進 変換

2進を右から3桁ずつ区切ると8進の1桁に対応。例: 11010110 → 011/010/110 → 3/2/6 → 326。8進はUNIXパーミッション(rwxrwxrwx→9ビット=3桁の8進)に向いています。

10進→16進 変換

10進を16で割り、商と余りを繰り返します。余り10〜15はA〜Fで表記。例: 255 → 255/16=15余15(F) → 15/16=0余15(F) → 下から並べてFF

カラーコード(16進)の見方

HTMLやCSSで使う #RRGGBB 形式のカラーコードは、赤(R)・緑(G)・青(B)の各成分を0〜255の16進(00〜FF)で表現します。

色名16進R(10進)G(10進)B(10進)
#FFFFFF255255255
#000000000
#FF000025500
#00FF0002550
#0000FF00255
#FFFF002552550
灰(中間)#808080128128128
オレンジ#FFA5002551650

W3C勧告のCSS Color Moduleで正式に定義されており、Webデザインの基本表記です。3桁短縮形(#FFF = #FFFFFF)、8桁形(#RRGGBBAA = 透明度付き)もサポートされます。

実務例で見る進数変換

例1: CSSカラーコード #3B82F6(Tailwind Blue-500)

#3B82F6 は R=3B(=59), G=82(=130), B=F6(=246)。RGB(59, 130, 246)の青。rgb(59 130 246)とCSS3表記でも同じ色になります。デザインツール(Figma/Sketch/Adobe XD)は16進とRGB両方を表示するため、相互変換の理解が必須です。

例2: UNIXパーミッション 755 の意味

8進の755 = 111 101 101(2進9桁) = rwx r-x r-x。所有者は読み書き実行、グループとその他は読み実行のみ。Webサーバのファイル権限で chmod 755 index.html は標準的な設定です。644は所有者rw、他はr-のみで、テキストファイル向け。

例3: メモリアドレス 0x7FFF5FBFF8AC

64ビットプロセスのスタックアドレス例。16進12桁 = 48ビット(x86-64は48ビットの仮想アドレス空間)。デバッガのポインタ表示、Wireshark等のプロトコルアナライザで頻出。10進表記だと約 140兆 の値になり、非現実的です。

例4: IPv6アドレス 2001:db8::1

省略前は 2001:0db8:0000:0000:0000:0000:0000:0001(16進4桁×8)。連続する0のブロックは::で1回だけ省略可能。128ビットを2進で書くと128桁、10進なら約38桁の巨大数のため16進表記が実務標準です。

例5: SHA-256 ハッシュ値 c3ab8ff13720e...

SHA-256は256ビットのハッシュ値を生成し、16進64桁で表示。データ整合性チェック、パスワードハッシュ(bcrypt等の派生)、ブロックチェーンの取引ID等で頻用。1文字違うだけでハッシュが全く変わる(雪崩効果)ため、改ざん検出に有効です。

業界での応用

Webデザイン・CSS

HTML/CSSのカラーコード #FF0000 は16進で赤(R=255,G=0,B=0)を意味。デザインツールとブラウザ表示の統一表記。W3C CSS Colorモジュール準拠。RGB→HSL/HSV変換も色設計で頻用。

UNIX/Linuxパーミッション

ファイル権限 rwxrwxrwx は9ビット=3桁の8進で表現。chmod 755 は所有者7(rwx), グループ5(r-x), その他5(r-x)。UNIX/Linux/macOSシステム管理者の基礎知識。POSIX標準準拠。

ネットワーク・IPアドレス

IPv4は32ビットを8ビット×4に分けた10進表記(192.168.1.1)、内部処理では2進・16進で扱う。IPv6は128ビットを16ビット×8に分けた16進表記(2001:db8::1)。RFC 791/4291準拠。

組込み・マイコン開発

マイコンのレジスタ設定・メモリマップ・GPIOビット操作で16進が標準。ARM Cortex-M、AVR、PICで REG = 0xAB のような記述が多用。IPA組込みスキル標準(ETSS)対応。

基本情報技術者試験・応用情報

IPA主催の国家試験。午前問題「基礎理論」で2進・16進変換、2の補数、シフト演算が毎年10問前後出題。過去問演習でパターン学習が有効。

データベース・文字コード

Unicode/UTF-8はコードポイントをU+16進表記(例: U+3042「あ」)。データベースのバイナリ型・BLOB表示、SHA/MD5ハッシュ値の表現も16進。ISO/IEC 10646準拠。

2の補数と符号付き整数

コンピュータで負の整数を表す標準的な方式が2の補数(two's complement)です。全ビットを反転(1の補数)してから1を足すと符号が反転します。8ビット符号付き整数の範囲は −128〜+127、16ビットは −32,768〜+32,767、32ビットは −2,147,483,648〜+2,147,483,647です。C言語のsigned charやJavaのbyteもこの方式を採用しています。

10進2進(8ビット)16進
+127011111117F
+10000000101
00000000000
−111111111FF
−211111110FE
−1281000000080

最上位ビット(MSB)は符号ビットと呼ばれ、0が正、1が負を意味します。加減算は符号ビットも含めて通常どおり加算し、あふれた桁を捨てるだけで正しい結果になるのが2の補数の設計上の利点です。そのため、負の数を16進で見ると −1 が FF、−128 が 80 のように、直感とは逆の並びになる点に注意してください。

ビット演算(AND/OR/XOR/NOT/シフト)

ビット単位の論理演算は、フラグ管理・マスク処理・暗号・画像処理・組込みのレジスタ制御など、低レイヤの実装で必須の技術です。

演算記号(C/Java/JavaScript)意味
AND&両方が1のとき10xFF & 0x0F = 0x0F
OR|どちらかが1なら10xF0 | 0x0F = 0xFF
XOR^異なるとき10xFF ^ 0x0F = 0xF0
NOT~全ビット反転~0x000000FF = 0xFFFFFF00(32ビット)
左シフト<<ビットを左へ(×2ⁿ)1 << 3 = 8
右シフト>>ビットを右へ(÷2ⁿ)16 >> 2 = 4

実務では「特定のビットが立っているか判定する」はANDとマスク、「特定のビットを立てる」はORで対象ビットに1、「特定のビットを反転する」はXORで対象ビットに1、「特定のビットを消す」はANDに反転マスク、という定番パターンが決まっています。左シフトは2倍、右シフトは2分の1に相当するため、掛け算・割り算の高速化にも使われます。

2の累乗と16進の桁数

2のべき乗の値は、メモリサイズ・配列長・データ型の上限として頻出します。16進で書くと桁の切りの良さが一目で分かります。

指数2ⁿ(10進)16進用途の例
2⁴160x1016進1桁で表せる状態数
2⁸2560x1001バイトの状態数
2¹⁰1,0240x4001KiB(キビバイト)
2¹⁶65,5360x10000符号なし16ビット・UTF-16のBMP
2²⁰1,048,5760x1000001MiB
2³²4,294,967,2960x10000000032ビット整数・IPv4アドレス空間
2⁶⁴約1.8×10¹⁹0x1000000000000000064ビット整数の上限

16進の1桁が4ビットに対応するため、2の累乗は指数が4の倍数のところで「1のあとに0が並ぶ」きれいな16進表記になります。2¹⁰ = 0x400 のように4の倍数でない指数では先頭が4・8になる点も覚えておくと、桁の見積もりが速くなります。

よくある間違い・注意点

  • 16進のA-Fを大文字/小文字で書き間違え — 16進の10〜15はA〜F(またはa〜f)。カラーコードは慣習的に大文字、URLエンコーディングは小文字。混在してもデコードは可能ですが、可読性のため統一する。
  • 基数プレフィックスの書き忘れ — 「10」だけでは2進の2か10進の10か16進の16か判別不能。C言語で 0b, 0o, 0x を付ける、または添え字を明示。
  • 10進の桁数と2進の桁数の見誤り — 10進1桁 ≒ 3.32ビット。10進の「100」は2進で7桁(1100100)、10進の「1000」は10桁(1111101000)必要。桁数感覚を身につける。
  • 2進から16進変換で桁区切り違い — 右(最下位)から4桁ずつ区切る。左から区切ると桁ずれが発生。例: 11010110は1101/0110 = D6であって、110/1011/0 ではない。
  • 負数の扱い — 通常の進数変換は正の整数のみ。負数を扱う場合は「2の補数」で表現し、ビット幅を明示する必要があります。
  • 小数点以下の変換 — 10進の小数(例: 0.1)は2進では無限循環小数になり、有限ビットで表現すると誤差が出ます(IEEE 754浮動小数点の話題)。整数変換とは別扱い。
  • JavaScriptのビット演算の32ビット制限 — JSの&, |, ^, ~などのビット演算子は32ビット整数として扱うため、2^31以上の値では想定外の結果に。BigIntで対応可能。

関連する規格・法令

  • JIS X 0021 ― 情報処理用語―数学演算。2進・10進・16進の演算、桁上げ、補数の定義。
  • JIS X 0201 ― 7ビット及び8ビットの情報交換用符号化文字集合。ASCII/JIS X 0201の文字コード。
  • ISO/IEC 10646 ― Universal Coded Character Set (UCS)。Unicodeの基盤規格。
  • RFC 791 / RFC 4291 ― IPv4 / IPv6のアドレス構造。10進・16進による表現。
  • W3C CSS Color Module ― HTMLカラーコードの公式仕様。16進RGB表記の標準。
  • POSIX (IEEE Std 1003.1) ― UNIX/Linuxの標準API。ファイルパーミッションの8進表現。
  • 情報処理技術者試験基準(IPA) ― 基本情報・応用情報の出題範囲。基礎理論分野で進数変換が必修。
  • IEEE 754 ― 浮動小数点数の国際規格。仮数部・指数部の2進表現。
  • RFC 3986 ― URI: Generic Syntax。URLエンコードでの16進%表記の仕様。
  • ISO/IEC 9899 ― C言語の国際標準規格。ビット演算子・16進リテラルの定義。

参考文献・公的資料

より正確な仕様や試験対策情報を確認したい場合は、以下の公的機関の資料を参照してください。

※本ページの変換結果は標準的な整数演算に基づく厳密値ですが、JavaScriptの数値精度限界(2^53未満)を超える場合は誤差が生じます。試験対策・実装での正確性については、上記IPA試験基準・IEEE 754・JIS X 0021の一次資料を参照し、必要に応じて有資格者(情報処理技術者、電気主任技術者等)の判断を仰いでください。

よくある質問(FAQ)

2進・8進・10進・16進はどう違う?

基数(1桁で表現できる値の数)が違うだけで、同じ数を別の記数法で表現しているだけです。2進は0-1、8進は0-7、10進は0-9、16進は0-F(0-15)。CPUの内部処理は2進、人間の日常計算は10進、メモリアドレス・カラーコードは16進、UNIXパーミッションは8進が主流です。

2進と16進、なぜ相互変換が簡単?

16 = 2⁴ なので、2進の4桁がちょうど16進の1桁と対応します。例: 1010 1100₂ = AC₁₆。同様に 8 = 2³ なので2進3桁 = 8進1桁。CPUのメモリアドレスは32/64ビットで長いため、16進で表記するのが世界標準です。

10進→16進の変換方法は?

10進を16で割り、商と余りを繰り返します。余りが10-15ならA-F。例: 255 → 255/16=15余15(F) → 15/16=0余15(F) → 下から並べてFF。JavaScriptでは (255).toString(16)、Pythonでは hex(255) で一発変換。

16進のA-Fはどう読む?

A=10, B=11, C=12, D=13, E=14, F=15。大文字・小文字どちらも同じ値です。慣習的にカラーコード(#FFAA00)は大文字、URLエンコード(%2f)は小文字が主流。マシン処理では区別しませんが、可読性のため統一するのがコツです。

UNIXパーミッションが8進なのはなぜ?

ファイル権限 rwxrwxrwx(所有者/グループ/その他 各3ビット×3=9ビット)を3ビットずつ8進1桁に対応させて表記しやすいから。chmod 755は所有者7(rwx=111), グループ5(r-x=101), その他5(r-x=101)。3桁の8進で全パターンを表現できます。

HTMLカラーコード #FF0000 は何色?

赤(R)=FF=255, 緑(G)=00=0, 青(B)=00=0 の意味で、純粋な赤を表します。W3C CSSカラーモジュール準拠の標準記法。#000000は黒、#FFFFFFは白、#808080は中間灰、#FFA500はオレンジ。3桁短縮形(#F00 = #FF0000)や8桁形(#RRGGBBAA)もサポート。

IPアドレスと2進数の関係は?

IPv4は32ビットを8ビット×4オクテットに分け、各オクテットを10進で表記(192.168.1.1)。内部処理では2進や16進で扱います。IPv6は128ビットを16ビット×8に分け、16進表記(2001:db8::1)。サブネットマスクの計算は2進で行うのが本質。RFC 791/4291準拠。

C言語やPythonでの進数リテラルは?

C/C++/Java/JavaScriptでは 2進0b1010、8進0o12または012、16進0xAC。Pythonも同様。文字列変換は JS (n).toString(2)、Python bin(n)/oct(n)/hex(n)。逆変換は parseInt("1010",2)/int("1010",2)

Unicodeのコードポイント表記 U+XXXX とは?

Unicodeでは各文字に一意の番号(コードポイント)を割り当て、U+16進4-6桁で表記します。例: U+3042「あ」(ひらがな)、U+1F600「😀」(絵文字)。ISO/IEC 10646準拠。UTF-8/UTF-16はコードポイントを実際のバイト列に符号化する方式です。

基本情報技術者試験ではどんな問題が出る?

「10進〇〇を2進で表せ」「2進の演算結果」「2の補数表現の範囲」「シフト演算」「16進FFの10進値」といった基礎理論問題が毎年10問前後出題。過去問演習が最も有効な対策です。IPA公式サイトで無料の過去問が公開されています。

負数を進数変換するには?

通常の進数変換は正の整数用。負数は「2の補数」で表現し、ビット幅を決めます。例: 8ビットで-5は、+5=00000101 → ビット反転=11111010 → +1 → 11111011。この11111011を8進や16進に変換すれば負数の進数表現になります。

小数の進数変換はどう計算する?

整数部と小数部を別々に処理。整数部は基数で除算、小数部は基数を乗算して整数部を取り出す作業を繰り返します。例: 0.375(10進) → 0.375×2=0.75(0) → 0.75×2=1.5(1) → 0.5×2=1.0(1) → 0.011(2進)。10進の0.1は2進で無限循環小数になるため、IEEE 754浮動小数点で誤差が生じます。

1KBと1KiBの違いは?

1KB=1,000バイト(SIの10進接頭辞)、1KiB=1,024バイト(IECの2進接頭辞)で、IEC 80000-13が正式に定義しています。HDD・SSDのメーカーは1,000ベース、OSやメモリは構造上1,024ベースで表示することが多く、同じ「1TB」でも表示容量に約9%の差が生じます。容量が減ったように見えるのは不良ではなく、単位の解釈の違いです。

浮動小数点(IEEE 754)は何桁の精度がある?

単精度float(32ビット)は10進で約7桁、倍精度double(64ビット)は約15〜17桁の有効桁数です。0.1のような一見単純な10進小数も2進では循環小数になるため、金額計算では10進の固定小数点型(Java の BigDecimal、Python の Decimal など)を使うのが安全です。

プログラミング言語の進数変換関数は?

JavaScriptは parseInt(str, base)num.toString(base)、Pythonは int(str, base)bin(n)oct(n)hex(n)、Javaは Integer.parseInt(str, base)Integer.toString(n, base) が標準です。ほとんどの主要言語に2〜36進数を扱う標準関数が用意されているので、自前で除算を繰り返す実装は基本的に不要です。