
2進数と
文 ゆめさく公開 更新
計算の途中を見る (10進数 と 2進数 の間)
10進数 26 を 2進数 に直す筆算です。2 で割り続け、商が 0 になるまでの余りを、下から上へ読むと答えになります。
| 割られる数 | ÷ 2 | 商 | 余り (下から読む) |
|---|---|---|---|
| 26 | ÷ 2 | 13 | 0 |
| 13 | ÷ 2 | 6 | 1 |
| 6 | ÷ 2 | 3 | 0 |
| 3 | ÷ 2 | 1 | 1 |
| 1 | ÷ 2 | 0 | 1 |
2進数 11010 を10進数に直す、位の重みの内訳です。各桁の値に、その桁の重み (2 の累乗) を掛けて、全部を足し合わせます。
| 桁 | 重み (2^n) | 桁 × 重み |
|---|---|---|
| 1 | 2^4 = 16 | 16 |
| 1 | 2^3 = 8 | 8 |
| 0 | 2^2 = 4 | 0 |
| 1 | 2^1 = 2 | 2 |
| 0 | 2^0 = 1 | 0 |
合計 26
使い方
- 変換したい数を、
10進数・2進数・8進数・16進数の どれか 1つの 欄に 入力します。 残り 3つの 欄が 自動で 計算されます。 - 負の
数や 特定の ビット幅で 考えたい ときは 「符号の 扱い」を 2の 補数に 切り 替え、 ビット幅を 選びます。 - なぜ
その 答えに なるかを 確かめたい ときは 「計算の 途中を 見る」を 開き、 割り算の 筆算・ 小数部の 計算・2の 補数の 手順・位の 重みの 内訳を 読みます。 - 値の
右の 「コピー」で プログラムや 資料に そのまま 貼り付けられます。
この 2進数変換のしくみ
このBigIntで持つので、
2進数から 10進数へは、 位の 重みの合計
2進数の
| 2のべき乗 | 値 |
|---|---|
| 2^4 | 16 |
| 2^5 | 32 |
| 2^6 | 64 |
| 2^7 | 128 |
| 2^8 | 256 |
| 2^9 | 512 |
| 2^10 | 1,024 |
| 2^11 | 2,048 |
| 2^12 | 4,096 |
10進数から 2進数へは、 2で 割り続けて 余りを拾う
10進数を
小数部は 分数のまま 計算し、 循環を検出する
浮動小
0〜31 の対応表
| 10進数 | 2進数 (5桁) | 8進数 | 16進数 |
|---|---|---|---|
| 0 | 00000 | 0 | 0 |
| 1 | 00001 | 1 | 1 |
| 2 | 00010 | 2 | 2 |
| 3 | 00011 | 3 | 3 |
| 4 | 00100 | 4 | 4 |
| 5 | 00101 | 5 | 5 |
| 6 | 00110 | 6 | 6 |
| 7 | 00111 | 7 | 7 |
| 8 | 01000 | 10 | 8 |
| 9 | 01001 | 11 | 9 |
| 10 | 01010 | 12 | A |
| 11 | 01011 | 13 | B |
| 12 | 01100 | 14 | C |
| 13 | 01101 | 15 | D |
| 14 | 01110 | 16 | E |
| 15 | 01111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 17 | 10001 | 21 | 11 |
| 18 | 10010 | 22 | 12 |
| 19 | 10011 | 23 | 13 |
| 20 | 10100 | 24 | 14 |
| 21 | 10101 | 25 | 15 |
| 22 | 10110 | 26 | 16 |
| 23 | 10111 | 27 | 17 |
| 24 | 11000 | 30 | 18 |
| 25 | 11001 | 31 | 19 |
| 26 | 11010 | 32 | 1A |
| 27 | 11011 | 33 | 1B |
| 28 | 11100 | 34 | 1C |
| 29 | 11101 | 35 | 1D |
| 30 | 11110 | 36 | 1E |
| 31 | 11111 | 37 | 1F |
2の 補数とビット幅
2進数
ビット列 = 2^w + x (xが
| 10進数 | 2進数 (8ビット) | 16進数 (8ビット) |
|---|---|---|
| 0 | 00000000 | 00 |
| 1 | 00000001 | 01 |
| 127 | 01111111 | 7F |
| -1 | 11111111 | FF |
| -2 | 11111110 | FE |
| -128 | 10000000 | 80 |
MDN Web Docs のNumber.prototype.toString()のページは、(-1).toString(2)は"-1"であって、"11111111"には
2進数の 足し算と引き算
この
0101 (5) + 0011 (3) = 1000 (8)
右の
00000101 (5) + 11111101 (3の
引き算は、
コードで書くなら
実際に
binary_convert.py
# 10進数 -> 2進数、2進数 -> 10進数
n = 26
binary_text = bin(n)
int_value = int("11010", 2)
print(binary_text) # '0b11010'
print(int_value) # 26
# 2の補数 (8ビット) で -1 を2進数にする
width = 8
value = -1
bits = value & ((1 << width) - 1)
text = f"{bits:0{width}b}"
print(text) # '11111111'binary-convert.js
// 10進数 -> 2進数、2進数 -> 10進数
const n = 26;
const binaryText = n.toString(2);
const intValue = parseInt("11010", 2);
console.log(binaryText); // '11010'
console.log(intValue); // 26
// BigInt なら 0b リテラルをそのまま読める
const big = BigInt("0b11010").toString(16);
console.log(big); // '1a'
// 2の補数 (8ビット) で -1 を2進数にする
const width = 8n;
const value = -1n;
const bits = value & ((1n << width) - 1n);
console.log(bits.toString(2).padStart(8, "0")); // '11111111'よく ある間違い
ゆめさくの
- 2進数の
桁の 重みを 1つずつずらして 数える 間違いです。 10101を 10進数に する とき、 中央の 1の 重みを 4ではなく 2と すると 19に なり、 正しい 21に なりません。 - 2進数の
余りを、 出てきた 順のまま 並べてしまう 間違いです。 2で 割り続けて 得た 余りは 下の 桁から 出てくるので、 最後に 求めた 余りから 逆順に 読む必要が あります。 - 重みを
1ずつ 数えるのではなく、 1の 個数だけを 数えて 桁の 重みを 無視してしまう 間違いです。 - 2の
補数の ビット列を、 符号つきの 10進数だと 思って 桁ごとに 読み替えてしまう 間違いです。 最上位ビットが 1なら、 2^wを 引く 計算が 別に 必要です。 parseInt("102", 2)のように、2進数に 使えない 文字 (2以上の 数字) を 含めると、 言語に よっては 途中までしか読まずに 別の 値に なります。 この 道具は、 使えない 文字が 1つでも あると エラーで 知らせ、 黙って 途中までの 値を 返すことはしません。
よくある質問
2進数変換とは、 何を する 道具ですか
10進数・2進数・8進数・16進数の
2進数とは何ですか
0と
2進数と 10進数は どう 変換しますか
2進数から
2進数の 小数点以下は どう 変換しますか
小数部は
マイナスの 2進数は どう 表しますか (2の補数)
2進数
負の 小数 (た とえば -12.3) は 2進数に できますか
この
2進数の 足し算は できますか
この
ビットと バイトの 関係を 教えてください
2進数1桁を
文字列 (テキスト) を 2進数に したい 時は どうしますか
文字は、
この 道具の 計算は、 通信や 保存をしますか
しません。
何桁くらいの 大きな 数まで 変換できますか
整数部は
基本情報技術者試験の 対策にも 使えますか
ゆめさくの
書き手と 日付と出典
- 書き手
- ゆめさく
- 公開日
- 更新日
MDN Web Docs Number.prototype.toString()
MDN Web Docs の英語版 (2025年7月10日更新) ・ に本文を読んで確かめました
radixに
2から 36までの 整数を 指定できる こと、 数値が 負の ときは 符号を 保ったまま 出力し、 radixが 2であっても 2の 補数ではなく 符号付きの 文字列に なることが 明記されていること。 MDN Web Docs の英語版 (2026年9月2日更新) ・ に本文を読んで確かめました
BigIntは
Numberの 安全な 範囲 (MAX_SAFE_INTEGERなど ) を 超えて 表せない 整数値を 表すための 型で、 すべての BigInt値は 符号つきである ことが 書かれている こと。 「桁数に 上限が 無い」とは 書かれていないので、 本文では その 言い方を していない。 MDN Web Docs JavaScript Lexical grammar (Numeric literals)
MDN Web Docs の英語版 ・ に本文を読んで確かめました
2進数リテラルは
0bまたは 0Bの 接頭辞に 続けて 0と 1が 続く 形で、 それ以外の 文字が 出た 時点で リテラルが 終わると 定められている こと。 BigIntリテラルは 桁数に 上限の ない 整数 (arbitrary precision) として 扱われると 書かれていること。 Python 3 ドキュメント int.to_bytes() / int.from_bytes()
Python 3 の英語版 ・ に本文を読んで確かめました
signed引数が、
整数を 2の 補数で 表すか どうかを 決める こと。 signedが False (既定) で 負の 整数を 渡すと OverflowErrorに なることが 書かれていること。
関係する 道具とレッスン
次の一歩
数の