計算ツール
単位プログラミング情報処理ネットワーク

進数変換計算機|2/8/10/16進の相互変換・ビット演算・カラーコード対応

2進・8進・10進・16進を瞬時に相互変換する無料電卓。1byte=8bit=16進2桁の基本から、IPv4/IPv6アドレス、CSSカラーコード(#RRGGBB)、メモリアドレス、ビット演算、2の補数(負数表現)、Unicodeコードポイントまで、プログラミング・組込・ネットワーク・情報処理試験の実務で必要な変換を網羅。IEEE 754浮動小数点表現やJIS X 0201/X 0208文字コード規格も参照。

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

2進⇔8進⇔10進⇔16進 計算機

計算式と基数の考え方

基本式

N進数の値 = Σ (桁の数字 × N^桁位置)

N進数(基数N)は、N個の記号(0〜N-1)を使って数を表現します。2進は0/1の2種類、8進は0-7、10進は0-9、16進は0-9とA-F(=10-15)を使います。桁の重みは右から順に N⁰=1、N¹=N、N²=N²、…と増えます。

例:16進 FF = 15×16¹ + 15×16⁰ = 240+15 = 255
2進 11111111 = 128+64+32+16+8+4+2+1 = 255

基数の相互関係

2進・8進・16進はすべて2の累乗の基数で、相互変換が単純です。2進3桁=8進1桁、2進4桁=16進1桁という関係を利用すれば、桁ごとに分割するだけで変換できます。10進への変換は各桁の重みを掛けて足す方法(位取り展開)、10進から変換する場合は基数で割った余りを逆順に並べる方法(除算法)を使います。

プレフィックス表記

プログラミングでは基数を明示するプレフィックスが使われます。0b(2進)、0o(8進)、0x(16進)が主流で、C/C++/Python/JavaScriptなど多くの言語で共通仕様。歴史的にはC言語で0(ゼロ)始まりが8進を意味した経緯もあり、リテラル表記のミスは重大なバグの原因になります。

基本対照表(0-255・1バイトの全範囲)

プログラミング・組込・ネットワークで頻用する0-255の対照表。1バイト(8bit)で表現できる符号なし整数の全範囲です。

10進16進2進8進用途例
00000000000000NULL・初期値
10100000001001SOH・真(true)
70700000111007BEL(ベル)
100A00001010012LF(改行)
130D00001101015CR(復帰)
150F000011110174bit最大
16100001000002016の1乗
322000100000040SP(スペース)
483000110000060ASCII "0"
654101000001101ASCII "A"
976101100001141ASCII "a"
1277F01111111177DEL・7bit最大
1288010000000200符号bit立
160A010100000240NBSP(拡張)
192C011000000300UTF-8 2byte開始
255FF111111113771byte最大

2の累乗・16の累乗表

メモリ容量・アドレス空間・ネットワーク設計で必ず登場する累乗値。暗記推奨。

2の累乗(bit → 値)

指数10進16進備考
2⁷1280x80signed 8bit範囲境界
2⁸2560x1001byteの状態数
2¹⁰1,0240x4001 Ki(≈1K)
2¹⁵32,7680x8000signed 16bit境界
2¹⁶65,5360x100002byte状態数・UCS-2
2²⁰1,048,5760x1000001 Mi(≈1M)
2³¹2,147,483,6480x80000000signed 32bit境界
2³²4,294,967,2960x100000000IPv4アドレス空間
2⁴⁰1,099,511,627,7761 Ti(≈1T)
2⁶⁴≈1.84×10¹⁹0x100…0(17桁)signed/unsigned 64bit境界

16の累乗(16進の桁重み)

指数10進bit数
16⁰14bit(=1桁)
16¹168bit(=2桁, 1byte)
16²25612bit
16³4,09616bit(=4桁, 2byte)
16⁴65,53620bit
16⁸≈4.29×10⁹32bit(=8桁, 4byte, IPv4)
16³²≈3.4×10³⁸128bit(=32桁, 16byte, IPv6/UUID)

bit / byte / word の関係

コンピュータのデータ単位はbit(ビット, b)を基本に、8bit=1byte(B)を基準とします。16進表記は「1byteを2桁で表現できる」という利便性から、メモリダンプ・通信プロトコル・実行ファイル解析のあらゆる場面で使われます。

単位bit数16進桁数典型的用途
nibble41BCD1桁・DMAコマンド
byte(オクテット)82ASCII・メモリ1番地
word (16bit)164UCS-2・古典CPUレジスタ
dword (double word)328IPv4アドレス・float
qword (quad word)6416double・現代CPUレジスタ
oword (octoword)12832IPv6・UUID・AES鍵

また、「1KB=1000byte」(SI準拠) と「1KiB=1024byte」(IEC 80000-13、二進接頭辞)は本来別物です。ストレージ容量表示は10進系、メモリは2進系の慣習があり、ユーザーから見た「実容量」の差異は常に議論の的です。

2の補数と負数表現

符号付き整数は2の補数(Two's Complement)で表現するのが現代CPUの標準。8bit符号付き整数の範囲は -128〜+127、16bitは -32768〜+32767、32bitは -2,147,483,648〜+2,147,483,647 です。

10進符号なし 8bit符号付き 8bit(2の補数)
+1270x7F (01111111)0x7F
+10x010x01
00x000x00
-10xFF (11111111)
-20xFE (11111110)
-1280x80 (10000000)

2の補数の求め方:ビット反転 + 1

-5の8bit表現は「00000101 → 反転 → 11111010 → +1 → 11111011 = 0xFB」となります。この方式なら加算器のみで減算を実現できるため、ハードウェア設計が簡潔になります。オーバーフロー時の符号反転バグ(0x80への到達で正負が反転)には注意が必要です。

実務ユースケース

CSSカラーコード (#RRGGBB)

Web/UI設計では#RRGGBB形式で16進6桁が標準。各2桁が赤・緑・青の輝度(0-255)を表し、#FFFFFF=白、#000000=黒、#FF0000=純赤。#が省略された「A0A0A0」なども頻用。CSS Color Module Level 4ではRGB関数`rgb(255 0 0)`との相互変換が必要な場面が増えています。

IPv4アドレス(オクテット表記)

IPv4は32bit=4オクテット(4byte)を10進のドット表記で表す。192.168.1.1は16進で C0.A8.01.01、2進で11000000.10101000.00000001.00000001。サブネットマスク/24 = 255.255.255.0 = 0xFFFFFF00の対応関係はネットワーク技術者必須。

IPv6アドレス

IPv6は128bit=16オクテットを16進4桁×8ブロックで表記。`2001:db8::1`のような表記で、`::`は連続する0の省略。RFC 5952で表記正規化が規定されており、大文字/小文字混在NG・先頭0省略・最長の0ブロックのみ`::`圧縮など、DNS・ファイアウォール設定でバグ源になりがち。

メモリアドレス・ポインタ解析

デバッガ・逆アセンブラはアドレスを16進表記で表示。x86_64では0x00007FFF…のような64bitアドレス、組込ARMでは0x08000000(Flash領域先頭)など、メモリマップは16進で覚えるのが実務標準。0x2000_0000_0000のようにアンダースコアで区切る流儀もあります(Rust/Python 3.6+)。

ビット演算(マスク・シフト・フラグ)

組込・ドライバ開発ではAND(&)/OR(|)/XOR(^)/NOT(~)/シフト(<<、>>)を使ってレジスタを操作。特定ビットの立上げ`x |= (1<<n)`、消去`x &= ~(1<<n)`、反転`x ^= (1<<n)`はイディオムとして必須。マスク値は16進で書くのが可読性◎。

文字コード・Unicode

UnicodeコードポイントはU+XXXXの16進表記。ASCII "A" = U+0041、ひらがな "あ" = U+3042、絵文字 "😀" = U+1F600。UTF-8では上位ビットパターン(0xC0-, 0xE0-, 0xF0-)で何byte文字かを判定。JIS X 0208(第一・第二水準)から生じるShift_JIS互換文字の16進コード確認は現場業務で頻用。

CSSカラー・IPアドレスの相互変換の実例

カラーコード変換例

16進RGB(10進)2進
#FFFFFFrgb(255,255,255)11111111 11111111 11111111
#000000rgb(0,0,0)00000000 00000000 00000000
#FF0000rgb(255,0,0)11111111 00000000 00000000
#00FF00rgb(0,255,0)00000000 11111111 00000000
#0000FFrgb(0,0,255)00000000 00000000 11111111
マゼンタ#FF00FFrgb(255,0,255)11111111 00000000 11111111
グレー中#808080rgb(128,128,128)10000000 10000000 10000000
Twitter青(旧)#1DA1F2rgb(29,161,242)00011101 10100001 11110010

IPアドレス変換例

用途10進表記16進
プライベート (RFC 1918)192.168.1.1C0A80101
ローカルホスト127.0.0.17F000001
ブロードキャスト255.255.255.255FFFFFFFF
Google Public DNS8.8.8.808080808
サブネットマスク /24255.255.255.0FFFFFF00

よくある間違い・注意点

  • C言語で先頭0を書いて8進解釈される — `int x = 0100;` は10進100ではなく8進100 = 10進64。zeropad目的の先頭0はバグの温床。10進定数は0で始めない、これは強い慣習です。
  • 16進の大文字/小文字混在 — 「0xff」と「0xFF」は同値ですが、IPv6アドレスはRFC 5952で小文字統一が推奨。カラーコードは大文字が慣習。仕様や規約に従いましょう。
  • 2進変換で先頭0を省いて桁ずれ — 10進10を「1010」で止めると4bit、8bit表現なら「00001010」と先頭0埋めが必要。ビットマスクの計算で桁ずれると全く違うレジスタを操作します。
  • 2の補数の符号を忘れる — 「0xFF」は符号なしなら255、符号付きなら-1。JavaScriptの>>>と>>の違いなど、言語ごとの右シフトの挙動(算術/論理)にも注意。
  • 「KB」と「KiB」の混同 — 1KB=1000byte(SI)、1KiB=1024byte(IEC 80000-13)。ストレージ容量表示、通信速度、メモリ表記で使い分けが違い、実容量が異なる問題は今も多発。
  • 16進6桁カラーコードのRGB順序 — WebのCSSは#RRGGBB順ですが、AndroidのXMLは#AARRGGBBで先頭にアルファ。組込LCDドライバではBGR順もあり、赤と青が入れ替わる。
  • 32bit整数のオーバーフロー — 0x7FFFFFFF + 1 は符号付き32bitで負数(-2147483648)にラップ。unsigned int でも0xFFFFFFFF + 1 = 0。金額・時刻・IDが吹き飛ぶ古典的バグ。

関連する規格・仕様

  • IEC 60559 / IEEE 754 ― 浮動小数点数の2進表現規格。32bit(単精度)・64bit(倍精度)の符号bit・指数部・仮数部の割当てを定義。デバッガのfloat表示は本規格に基づく。
  • IEC 80000-13 ― 情報量の単位を定めた国際規格。バイト(B)・ビット(bit)、二進接頭辞(Ki・Mi・Gi・Ti)、SI接頭辞(K・M・G・T)の使い分けを規定。
  • ISO/IEC 646 / JIS X 0201 ― 7bit ASCII・8bit半角カナを含む文字符号規格。0x20-0x7E がASCII可読部、0xA1-0xDFが半角カナ。
  • JIS X 0208 / JIS X 0213 ― 日本語文字符号規格。区点コードと16進表現の対応。Shift_JIS・EUC-JP・UTF-8の変換ロジックの基礎。
  • Unicode Standard (ISO/IEC 10646) ― U+0000〜U+10FFFFを定義。UTF-8/UTF-16/UTF-32のエンコーディング仕様を規定。
  • RFC 791 (IPv4) / RFC 8200 (IPv6) ― インターネットプロトコルアドレス表現。IPv4は32bit・IPv6は128bit。
  • RFC 5952 ― IPv6アドレスのテキスト表現ルール。小文字統一・0省略・::圧縮ルール。
  • CSS Color Module Level 4 ― W3C勧告。#RGB/#RRGGBB/#RRGGBBAA表記とrgb()/rgba()/hsl()関数の変換仕様。

参考文献・公的資料

実務で仕様を確認する際は、以下の一次資料を参照してください。

※本ページの変換結果は入力値に基づく数式計算です。実務での仕様適合(通信プロトコル・文字コード・浮動小数点表現など)は、上記の公式規格・RFC・JIS等の最新版を必ず参照してください。負数の右シフト、オーバーフロー時の挙動などは言語・実装によって異なります。

よくある質問(FAQ)

なぜ16進数を使うの?

2進4桁を1桁に圧縮できるため、メモリダンプや通信ログの可読性が飛躍的に上がります。1byte=8bit=16進2桁の関係が単純で、人間が桁を読み間違えにくいのも利点。10進はハードウェアと対応が悪く、8進は昔のPDPやUnixパーミッション以外ではほとんど使われません。

1バイトは何bit?何桁の16進?

1バイト(byte, オクテット)は8bit、16進では2桁で表現できます。値の範囲は符号なしで0〜255(0x00〜0xFF)、符号付き(2の補数)で-128〜+127。通信プロトコルでは「オクテット」という呼称も使われます。

1024と1000、どっちがKB?

厳密には1KB=1000byte(SI準拠)、1KiB=1024byte(IEC 80000-13、二進接頭辞キビ)です。しかし歴史的にメモリ業界では「KB=1024」の慣習が残り、Windowsはメモリ・ストレージともに1024基準、macOS/Linuxは1000基準で表示するなど混乱があります。

2の補数って何?

符号付き整数を表現する方式で、ビット反転して1を足すと負数になります。例:8bitの-1は「00000001 → 反転 → 11111110 → +1 → 11111111 = 0xFF」。加算器だけで減算が実現でき、ハードウェア設計が単純化されるため、現代の全てのCPUで採用されています。

CSSカラー#FFEEDDって何色?

RGB(255,238,221)、ペール系の温かみあるベージュです。R=FF(255)最大、G=EE(238)高い、B=DD(221)やや低い。R>G>Bなのでオレンジ〜ベージュ系。#RRGGBB形式は各2桁で0-255の輝度を表し、白は#FFFFFF、黒は#000000、赤は#FF0000。

IPアドレスを16進にする意味は?

ルータ・ファイアウォールのACL設定やパケットヘッダ解析で16進表記が使われます。192.168.1.1 = 0xC0A80101。IPv6は仕様上16進表記が必須で、`2001:db8::1`のように書きます。またサブネットマスクとネットワークアドレスのAND演算は2進/16進で考えるのが早い。

0x7F+1はいくつになる?

符号なし8bitなら0x80(=128)、符号付き8bit(2の補数)ならオーバーフローで-128。127→-128という符号反転が起きるので、金額・タイマー値・IDなど数値の整合性が重要な箇所ではオーバーフロー検出が必須です。

浮動小数点の16進ダンプの読み方は?

IEEE 754単精度(32bit)は符号1bit・指数8bit・仮数23bitの順で並びます。0x3F800000 = 1.0、0x40000000 = 2.0、0xBF800000 = -1.0。デバッガでfloat変数をメモリダンプすると本表現で見え、NaN・Inf・非正規化数のパターン識別が可能です。

ビットマスクとは?何のために使う?

特定のビット位置を取り出す・立てる・落とすために使う定数値。例:0x0F は下位4bit抽出、0xF0 は上位4bit抽出。組込レジスタは1つの32bit変数に複数の設定ビットが詰め込まれていることが多く、マスクとシフトで安全に読み書きします。

Unicodeコードポイントの調べ方は?

Windowsは「文字コード表(charmap.exe)」、macOSは「絵文字と記号ビューア」、オンラインではunicode.orgで全文字が検索可能。「あ」=U+3042、「A」=U+0041、絵文字「😀」=U+1F600。プログラムで書くならJSは`'\u{3042}'`、Pythonは`'あ'`。

負の数を16進で表すには?

2の補数表現でビット反転+1。例:8bitの-3は「3=0x03 → 0xFC + 1 = 0xFD」。ビット幅を明示しないと意味が定まらないため、「int32で-3」なら0xFFFFFFFD、「int8で-3」なら0xFD。デバッガの表示は言語・型で解釈が変わります。

16進10桁の数字は最大でどれくらい?

16¹⁰ - 1 = 1,099,511,627,775 (0xFFFFFFFFFF)。約1.1兆、40bit分です。MACアドレス(6byte=12桁, 0xFFFFFFFFFFFF)より少し小さい範囲。40bitはメモリバス幅として1TB空間相当。