進数変換 計算ツール|2進数・10進数・16進数・8進数を4方向同時で変換
どの欄に入力しても他の3進数が即時自動連動する進数変換ツール。2進数(バイナリ)・10進数(デシマル)・16進数(ヘキサ)・8進数(オクタル)の相互変換、ビット数・バイト数・2の補数、色コード#RRGGBBやIPv4/IPv6のアドレス変換、Unicode/ASCIIコード読み替えまで、プログラミング・電子工作・ネットワーク・組込み開発・情報処理試験(基本情報/応用情報)で頻用する場面に幅広く対応します。IEEE 754浮動小数点、RFC791(IPv4)、JIS X 0201(ASCII)、ISO/IEC 10646(Unicode)などの公的規格・国際標準に基づいた計算・解説付きの無料ツールです。
進数変換ツール
進数の基礎と変換原理
基数(Base)とは
基数(Base/Radix)とは、1桁で表せる数字の種類の数を指します。10進数は0〜9の10種類、2進数は0と1の2種類、16進数は0〜9とA〜Fの16種類、8進数は0〜7の8種類を使います。位取り記数法では、右からn桁目の数字は「基数のn乗」を意味します。例えば10進数の「123」は 1×10² + 2×10¹ + 3×10⁰、2進数の「1011」は 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 11(10進) となります。
変換の基本アルゴリズム
10進 → 他進数:基数で割った余りを下から並べる
他進数 → 10進:各桁 × 基数のべき乗の総和
例:10進数「255」→ 2進数の変換手順は、255÷2=127余り1、127÷2=63余り1、…と繰り返して余りを下から読み「11111111」を得ます。逆方向は各桁を10進値に展開して加算します。プログラミングではparseInt(str, base)やnum.toString(base)で一発変換可能ですが、内部ではこのアルゴリズムが動いています。
コンピュータが2進数を使う理由
デジタル回路は電圧の「高い/低い」の2状態しか区別しないため、0と1のみを扱う2進数と相性が良く、フリップフロップやトランジスタで容易に実装できます。16進数は2進数4桁と1桁が一対一対応(0000〜1111 ⇔ 0〜F)するため、長い2進数を読みやすく圧縮する目的で使われます。1バイト=8ビット=16進数2桁というきれいな対応が、メモリダンプやカラーコードで16進表記が愛される理由です。
主要値の早見表(0〜65535)
プログラミング・情報処理試験・電子工作で頻出する数値を4進数で対比しました。1バイト境界(255)、2バイト境界(65535)、KiB(1024)、MiB(1048576)などのキリの良い値を暗記しておくと現場で速く動けます。
| 10進 | 2進 | 16進 | 8進 | 備考 |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | false / NUL |
| 1 | 1 | 1 | 1 | true |
| 8 | 1000 | 8 | 10 | 1バイト |
| 10 | 1010 | A | 12 | 16進数「A」 |
| 15 | 1111 | F | 17 | 4ビット最大(ニブル) |
| 16 | 10000 | 10 | 20 | 5ビット最小 |
| 32 | 100000 | 20 | 40 | ASCII 空白 |
| 64 | 1000000 | 40 | 100 | ASCII '@' |
| 100 | 1100100 | 64 | 144 | — |
| 127 | 1111111 | 7F | 177 | 符号付き8bit最大 |
| 128 | 10000000 | 80 | 200 | MSB立つ |
| 255 | 11111111 | FF | 377 | 1バイト(8bit)最大 |
| 256 | 100000000 | 100 | 400 | 2バイト最小 |
| 1024 | 10000000000 | 400 | 2000 | 1KiB |
| 4096 | 1000000000000 | 1000 | 10000 | ページサイズ |
| 32767 | 111111111111111 | 7FFF | 77777 | 符号付き16bit最大 |
| 65535 | 1111111111111111 | FFFF | 177777 | 2バイト(16bit)最大 |
| 16777215 | 111111111111111111111111 | FFFFFF | 77777777 | 3バイト(24bit色)最大 |
2の累乗・16進数の桁数
プログラミングでは2のべき乗の値がメモリ・配列・データ型の上限として頻出します。
| 指数 | 2ⁿ (10進) | 16進 | 用途例 |
|---|---|---|---|
| 2⁴ | 16 | 0x10 | 16進1桁の範囲 |
| 2⁸ | 256 | 0x100 | 1バイトの状態数 |
| 2¹⁰ | 1,024 | 0x400 | 1KiB(キビバイト) |
| 2¹⁶ | 65,536 | 0x10000 | 符号なし16bit・UTF-16 BMP |
| 2²⁰ | 1,048,576 | 0x100000 | 1MiB |
| 2³² | 4,294,967,296 | 0x100000000 | 32bit整数・IPv4空間 |
| 2⁶⁴ | 約1.8×10¹⁹ | 0x10000000000000000 | 64bit整数上限 |
2の補数・符号付き整数
コンピュータで負の整数を表す標準的な方式が2の補数(two's complement)です。全ビット反転(1の補数)して+1すると符号反転になります。8ビット符号付き整数(int8)の範囲は −128〜+127、16ビットは −32768〜+32767、32ビットは −2,147,483,648〜+2,147,483,647。JavaのbyteやC言語のsigned charもこの方式を採用しています。
| 10進 | 2進(8bit) | 16進 |
|---|---|---|
| +127 | 01111111 | 7F |
| +1 | 00000001 | 01 |
| 0 | 00000000 | 00 |
| −1 | 11111111 | FF |
| −2 | 11111110 | FE |
| −128 | 10000000 | 80 |
符号付きの最上位ビット(MSB)は「符号ビット」と呼ばれ、0=正、1=負を意味します。加減算は符号ビットも含めて通常の加算を行い、桁あふれ(オーバーフロー)を無視するだけで正しい結果になるのが2の補数の設計上の利点です。
ビット演算(AND/OR/XOR/NOT/SHIFT)
ビット単位での論理演算は、フラグ管理・マスク処理・暗号・画像処理・組込みレジスタ制御など、あらゆる低レイヤ実装で必須の技術です。
| 演算 | 記号(C/Java/JS) | 意味 | 例 |
|---|---|---|---|
| AND | & | 両方1の時1 | 0xFF & 0x0F = 0x0F |
| OR | | | どちらか1で1 | 0xF0 | 0x0F = 0xFF |
| XOR | ^ | 異なる時1 | 0xFF ^ 0x0F = 0xF0 |
| NOT | ~ | 全ビット反転 | ~0xFF = 0x…FF00 |
| 左シフト | << | ビットを左へ(×2) | 1 << 3 = 8 |
| 右シフト | >> | ビットを右へ(÷2) | 16 >> 2 = 4 |
実務例:「特定ビットが立っているか判定」はAND演算とマスク、「特定ビットを立てる」はORで指定ビットに1、「特定ビットを反転」はXORで指定ビットに1、「特定ビットを消す」はANDでビット反転マスク、と定番パターンが決まっています。
実務での応用シーン
プログラミング・アルゴリズム
フラグ管理(1ビット1機能)、ハッシュテーブル、ビットマップ画像処理、暗号(XOR暗号化)、通信プロトコル解析、パーミッション管理(chmod 755)、Unicodeエンコード。C・Rust・Go・Java・Python等のシステム系言語では日常的にビット操作を用います。
電子工作・組込み開発
マイコン(Arduino/ESP32/STM32)のGPIO制御、レジスタ設定、I2C/SPI通信のデータ解析、センサ値のビット取り出し。データシートに登場するレジスタ値はほぼ16進表記のため、進数変換とビットマスクの習熟が不可欠です。
ネットワーク・通信
IPv4/IPv6アドレスとサブネットマスク、CIDR表記の解析(/24 = 255.255.255.0)、MACアドレス(48bit)、TCP/UDPパケットのフラグビット、RFC791準拠のヘッダ解析、Wireshark等でのパケットキャプチャ解析。
情報処理試験(基本/応用/高度)
IPA(情報処理推進機構)の基本情報技術者・応用情報技術者・高度試験の午前問題では、進数変換・浮動小数点(IEEE 754)・2の補数・論理演算が毎回複数問出題されます。手計算で速く正確に解けるかがスコアを左右します。
Webデザイン・カラーコード
CSSの#RRGGBB表記(赤緑青各1バイト=16進2桁)、RGBA・HSL変換、パレット生成、アクセシビリティ(WCAG)のコントラスト比計算。デザイナーとエンジニアの共通言語として16進カラーコードが定着しています。
データベース・ハッシュ・暗号
MD5/SHA-1/SHA-256のハッシュ値は16進文字列で表現、UUID(128bit)、JWTトークン、Base64エンコード、AES暗号化キー。データベース内部のROWIDや主キー生成でも16進表現が標準です。
IPアドレス・カラーコード・ASCII
IPv4アドレスの2進表現
IPv4アドレスは32ビットで、8ビットずつドットで区切って10進表記します。例:192.168.1.1 = 11000000.10101000.00000001.00000001。サブネットマスク /24 は上位24ビットが1(=255.255.255.0)を意味し、CIDR表記の理解にはビット単位の把握が必須です。
カラーコード#RRGGBB
Web/デザインで使う16進カラーコードは、赤・緑・青の各成分を1バイト(0〜255=00〜FF)で表します。#FF0000=純赤、#00FF00=純緑、#0000FF=純青、#FFFFFF=白、#000000=黒。透明度を加えた#RRGGBBAA形式(RGBAカラー)にも対応するツールが多く、CSS Colors Module Level 4(W3C)で仕様化されています。
ASCII/Unicodeコード
ASCII(JIS X 0201)では英数字・記号を7ビット(0〜127)で表現。'A'=65=0x41、'a'=97=0x61、'0'=48=0x30。Unicode(ISO/IEC 10646)では日本語・絵文字を含む世界の全文字を最大32ビットで表し、UTF-8/UTF-16/UTF-32のエンコード形式で運用されます。
よくある間違い・注意点
- 16進の桁と10進の桁を混同 — 16進「10」は10進16、16進「100」は10進256です。桁位置の重み(1,16,256,4096,…)を意識せず読むと桁あふれ計算を誤ります。
- プレフィックスの読み違い — 「0x」はC/Java/Python/JSの16進、「0b」は2進、「0o」または先頭0は8進(0755=8進)。特にJSの旧仕様では0始まりが8進扱いされる場合があり、eslint系のルールで警告が出ます。
- 符号ビットの見落とし — 8bit値0xFFを符号なしなら255、符号付きなら−1と、扱う型で意味が変わります。C言語のcharはコンパイラ依存(signed/unsignedどちらもあり得る)なので明示宣言が推奨されます。
- KiBとKBの混同 — 1KiB=1024バイト(2の10乗)、1KB=1000バイト(SI規則)。ストレージ容量表記(HDD/SSD)は1000ベース、メモリ・OSは1024ベースを使うことが多く、同じ「1GB」でも約7%の差が生じます。IEC 80000-13で正式定義済み。
- 浮動小数点の内部表現の誤解 — 「0.1 + 0.2 = 0.30000000000000004」となるのはIEEE 754の2進浮動小数点で0.1が有限桁で表せないため。金額計算では10進固定小数点(BigDecimal/Decimal型)を使うのが鉄則です。
- ビットシフトのオーバーフロー — JavaScriptのビット演算は32bit符号付き整数で処理されるため、
1 << 31は−2147483648になります。BigIntや文字列連結での対応が必要です。
関連する規格・公的資料
- IEEE 754 ― 浮動小数点数の国際標準規格。単精度(32bit)・倍精度(64bit)の内部表現、丸め処理、特殊値(NaN/Infinity)を規定。
- ISO/IEC 10646 / Unicode ― 世界の文字コードの国際標準。コードポイントU+0000〜U+10FFFFを16進で表記。
- JIS X 0201 / ASCII ― 半角英数字・記号の7ビット符号。JIS X 0208はJIS漢字コード。
- RFC 791 (IPv4) / RFC 8200 (IPv6) ― IETFが管理するインターネット標準。IPv4は32bit、IPv6は128bitのアドレス空間。
- IEC 80000-13 ― 情報量の単位(bit/Byte)と接頭辞(KiB=1024, KB=1000)の国際規格。
- 基本情報技術者試験・応用情報技術者試験(IPA) ― 進数変換・論理演算・2の補数は毎回複数問出題される必須テーマ。
参考文献・公的資料(発リンク)
より深く学びたい方は以下の公的機関・国際団体の一次資料を参照してください。
- 文部科学省 高等学校学習指導要領(情報) ― 高等学校「情報Ⅰ」「情報Ⅱ」で扱う進数・データ表現の学習指導要領。
- 情報処理推進機構(IPA) 基本情報技術者試験 ― 進数変換・論理演算・2の補数の公式試験範囲と過去問。
- 情報処理推進機構(IPA) 応用情報技術者試験 ― 浮動小数点・ビット演算応用の上位試験。
- IEEE(米国電気電子学会) ― IEEE 754浮動小数点規格の発行元。
- ISO/IEC 10646 (Unicode) ― 国際文字コード規格の公式ページ。
- RFC 791 (IETF) IPv4規格書 ― インターネット標準の一次資料。
- W3C CSS Color Module Level 4 ― Web色指定(#RRGGBB/RGBA/HSL)の公式仕様。
- 日本産業標準調査会(JISC) ― JIS X 0201/0208等の日本産業規格の公式検索窓口。
- MDN Web Docs ビット演算子 ― JavaScriptのビット演算リファレンス(Mozilla Foundation運営)。
- 日本情報オリンピック(JOI) ― プログラミング競技会の公式サイト。進数・ビット操作は基礎教材で頻出。
parseInt/toStringによる処理で、32bit整数の範囲(約±21億)を超える大きな数値では精度が失われる場合があります。暗号化キー・ハッシュ値等の厳密な計算にはBigIntや専用ライブラリ、または各言語の公式ドキュメントに基づく実装を用いてください。情報処理試験対策では公式試験範囲・過去問(IPA公式)を優先し、業務システムの設計では上記公的規格の最新版を確認することをおすすめします。
よくある質問(FAQ)
16進数の0xや#は何?
プレフィックス記法。0xFFはC・JavaScript・Pythonで「16進数のFF(=10進255)」を意味します。#FF0000はCSSで赤色を表す16進カラーコード。Java/C#では0x、8進は0o(旧記法は先頭0)、2進は0bを使うのが現代言語の標準です。
2進数の負の数はどう表す?
2の補数表記が事実上の国際標準です。8ビットなら−1=11111111(0xFF)、−128=10000000(0x80)。最上位ビット(MSB)が符号ビットで、0=正・1=負を意味します。加減算は符号ビットも含めて通常の加算で正しい結果が出るのが2の補数の設計上の優れた点です。
16進数1桁は何ビット?
4ビット(ハーフバイト・ニブル)です。F=1111、A=1010。1バイト=8ビット=16進2桁(00〜FF)、2バイト=16ビット=16進4桁(0000〜FFFF)、4バイト=32ビット=16進8桁という対応を暗記しておくと現場で速く動けます。
IPアドレスは10進?2進?
IPv4は表記上ドット区切り10進(例:192.168.1.1)ですが、内部処理では32ビット2進数です。192.168.1.1 = 11000000.10101000.00000001.00000001。サブネットマスク/24は上位24ビットが1(=255.255.255.0)を意味し、CIDR表記の理解にはビット単位の把握が必須です。
カラーコード#RRGGBBは?
R/G/B各成分を2桁の16進数(0〜255)で表現します。#FF0000=純赤、#00FF00=純緑、#0000FF=純青、#FFFFFF=白、#000000=黒。RGBの加法混色(光の三原色)の原理で、Webデザインの標準記法です。CSS Color Module Level 4では#RRGGBBAA(透明度付き)も利用可能。
1KBと1KiBの違いは?
1KB=1000バイト(SI 10進接頭辞)、1KiB=1024バイト(IEC 2進接頭辞)。IEC 80000-13で正式定義されています。HDD/SSDメーカーは1000ベース、OS(Windows/macOS/Linux)やメモリはRAMの構造上1024ベースが多く、同じ「1TB」でも表示容量に約9%の差が生じます。
2の補数はなぜ普及した?
1の補数(全ビット反転のみ)には「+0と−0」が別に存在する不便がありました。2の補数(1の補数+1)は0が一意で、加減算回路が減算器不要になり、ハードウェア設計が単純化されるためほぼ全ての現代CPUで採用されています。
浮動小数点(IEEE 754)は何桁の精度?
単精度float(32bit)は10進で約7桁、倍精度double(64bit)は約15〜17桁の有効桁数です。0.1のような一見単純な10進小数も2進では循環小数になり、金額計算では10進固定小数点(Java BigDecimal, Python Decimal)を使うのが安全です。
ASCIIとUnicodeの違いは?
ASCII(JIS X 0201)は7ビットで英数字・記号128文字。Unicode(ISO/IEC 10646)は世界の全文字を最大32ビットで表現し、絵文字も含む110万個以上のコードポイントを定義。UTF-8はASCII互換で日本語は3〜4バイト、UTF-16は基本2バイトのエンコード形式です。
ビットシフト演算の使い所は?
x << nは「xを2ⁿ倍」、x >> nは「xを2ⁿで割った商」を高速に計算できます。組込み系ではハードウェア除算器がない場合の除算代用、フラグ管理では特定ビットの立ち上げflag |= (1 << n)、権限管理のマスクなどで頻用されます。
情報処理試験に頻出のパターンは?
10進⇔2進変換、10進⇔16進変換、2の補数計算(−nの表現)、論理演算(AND/OR/XOR)の真理値表、IEEE 754の符号・指数・仮数の分離、IPアドレスとサブネットマスク、シフト演算とオーバーフロー判定が定番。IPA公式の過去問で反復訓練が最短ルートです。
プログラミングで進数変換関数は?
JavaScript:parseInt(str, base) / num.toString(base)。Python:int(str, base) / bin(n) / hex(n) / oct(n)。Java:Integer.parseInt(str, base) / Integer.toString(n, base)。ほぼ全ての主要言語に標準関数が用意されています。