二進法
[Wikipedia|▼Menu]
.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}

「2進数」はこの項目へ転送されています。有理数を含む2進数については「p進数」をご覧ください。

二進法(にしんほう、(: binary numeral system, base-2 numeral system)とは、底を2とする位取り記数法および命数法である。二進法によって表された数を二進数(にしんすう、(: binary number)と呼ぶ。二進法において、位は順に底2の冪(…, .mw-parser-output .sfrac{white-space:nowrap}.mw-parser-output .sfrac.tion,.mw-parser-output .sfrac .tion{display:inline-block;vertical-align:-0.5em;font-size:85%;text-align:center}.mw-parser-output .sfrac .num,.mw-parser-output .sfrac .den{display:block;line-height:1em;margin:0 0.1em}.mw-parser-output .sfrac .den{border-top:1px solid}.mw-parser-output .sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}1/4, 1/2, 1, 2, 4, …)ごとに取り、位の値は 0 または 1 を取る(例:十進数の 7 (= 4 + 2 + 1) は二進法で 111、1.75 (= 1 + 0.5 + 0.25) は 1.11 と表される)。
記数法「位取り記数法」も参照二進法で表された数

を底とする位取り記数法を二進記数法または単に二進法と呼ぶ。二進法による数の表示は、一の位を k = 0 とし添字 k で位の位置を表し、位の値を dk ∈ {0, 1} で表せば、以下のように書ける: d n − 1 ⋯ d 1 d 0 . d − 1 ⋯ . {\displaystyle d_{n-1}\cdots d_{1}d_{0}.d_{-1}\cdots \,.}

これは以下の総和の略記と見なせる: ∑ k n − 1 d k 2 k = d n − 1 2 n − 1 + ⋯ + 2 d 1 + d 0 + d − 1 2 + ⋯ . {\displaystyle \sum _{k}^{n-1}d_{k}2^{k}=d_{n-1}2^{n-1}+\cdots +2d_{1}+d_{0}+{\frac {d_{-1}}{2}}+\dotsm {}\,.}

例えば十進法における 21.25 は二進法において、 10101.01 2 = 16 + 4 + 1 + 1 4 = 21.25 {\displaystyle 10101.01_{2}=16+4+1+{\frac {1}{4}}=21.25}

と表される(添字の 2 は二進表記であることを示す)。負の数は一般的な記数法と同じく、負号をつけて表す(例:−10101.012)。

十進法など一般の位取り記数法と同様に、二進法においても小数部が有限の長さとなる数は一部の有理数に限られ、また円周率のような無理数を厳密に表すことはできない。二進法の場合、有理数を表す既約分数について、分母が2の冪ならば有限小数として書けるが、そうでないならば有限小数としては書けない。例えば十進法では 1/5 を有限小数 0.2 で表せるが、二進法では循環小数 0.00112 = 0.00110011…2 で表さなければならない。
デジタル機器での使用「コンピュータの数値表現」も参照

電子式コンピュータ電子回路などのデジタル回路(デジタル論理回路)、磁気ディスク等の記憶メディアでは、電圧の高低、磁極の N/S など、物理現象を二状態のみに縮退して扱う(離散化などと言う[注 1])ので、それに、真と偽の2つの値(2値の真理値)のみを使用する二値論理(しばしば、電子的には HL、論理的には TF という記号が使われる)をマッピングする。更にそこで数値を扱うには、それに「01」の二進法をマッピングするのが最適である。

多くの応用で見られるように数が有限の場合は、数学的に言うなら「有理数の部分集合」が表現されているわけであるが、通常は「有限精度の実数」が表現されていると解釈される。このため、コンピュータやデジタル機器は二進数が使用される。

また、八進法十六進法三十二進法は同じく2の冪を底とするためしばしば利用される。
負数の扱い「符号付数値表現」も参照

ビット列によって負の数の値を表すため広く用いられる方法の一つとして、2の補数表現がある。2の補数表現は、n 桁のビット列の最上位ビットの重みを +2n−1 ではなく −2n−1 とするものである。2の補数表現は、そのビットパターンが、加減(及び、乗)の演算において特別な処理が不要なものになる、という特長を持つ。ただし、溢れ(オーバーフロー)の扱いが違ってくる(これは、例えばx86プロセッサにおける、キャリーフラグとオーバフローフラグの違いのことである(ステータスレジスタ#キャリーとオーバーフローを参照))。
他のN進法から二進法への変換方法

十進法から二進法への変換方法」などといったものを考える必要はない。どちらも数の「表現法」に過ぎないのだから、単に「表現法 → 数 → 表現法」といったようにして変換すれば良いのである。
正の整数

正の整数 m を十進法から二進法に変換するのは次のようにする。
m を x に代入する。

x を 2 で割って、余りを求める。

x/2 の商を x に代入する。

2. に戻る。x = 0 であれば終了。

余りを求めた順の逆に並べると、それが二進法に変換された結果になる。

例:192を二進法に変換する。2)192   192=20×192
2) 96…0 192=21× 96+20×0
2) 48…0 192=22× 48+21×0+20×0
2) 24…0 192=23× 24+22×0+21×0+20×0
2) 12…0 192=24× 12+23×0+22×0+21×0+20×0
2) 6…0 192=25× 6+24×0+23×0+22×0+21×0+20×0
2) 3…0 192=26× 3+25×0+24×0+23×0+22×0+21×0+20×0
2) 1…1 192=27× 1+26×1+25×0+24×0+23×0+22×0+21×0+20×0
0…1

よって 19210 = 110000002 である。
正で 1 未満の数

正で 1 未満 (0 < m < 1) である数 m を十進法から二進法に変換するのは次のようにする。
1 を n に、m を x に代入する。

2x < 1 ならば、小数点以下第 n 位は 0 になる。2x > 1 ならば、小数点以下第 n 位は 1 になる。

2x = 1 ならば終了。

2x > 1 ならば 2x - 1 を x に代入する。2x < 1 ならば 2x を x に代入する。

n + 1 を n に代入する。

小数点以下の桁数が必要な桁数まで求まっているか、循環小数となったら終了する。

2. へ戻る。

計算の例1: 1/3 を二進法に変換する。

処理(途中)結果
1 3 {\displaystyle {\begin{matrix}{\frac {1}{3}}\end{matrix}}} 0.
1 3 × 2 = 2 3 < 1 {\displaystyle {\begin{matrix}{\frac {1}{3}}\times 2={\frac {2}{3}}<1\end{matrix}}} 0.0
2 3 × 2 = 1 1 3 ≥ 1 {\displaystyle {\begin{matrix}{\frac {2}{3}}\times 2=1{\frac {1}{3}}\geq 1\end{matrix}}} 0.01
1 3 × 2 = 2 3 < 1 {\displaystyle {\begin{matrix}{\frac {1}{3}}\times 2={\frac {2}{3}}<1\end{matrix}}} 0.010

ここで「処理」の部分の最後「 1 3 × 2 = 2 3 < 1 {\displaystyle {\begin{matrix}{\frac {1}{3}}\times 2={\frac {2}{3}}<1\end{matrix}}} 」はそれ以前に出てきた式である。このため、これ以上続けても同じ式の繰り返しで永久に終わらないことがわかる。すなわち小数部の「01」が循環することがわかるので終了する。

よって1/310=0.010101…2=0.012

(なお、アンダーバーの部分(01)は無限に繰り返しという意味)

計算の例 2: 十進法での 0.1 を二進法に変換する。

処理(途中)結果
0.10.
0.1×2=0.2<10.0
0.2×2=0.4<10.00
0.4×2=0.8<10.000
0.8×2=1.6≥10.0001
0.6×2=1.2≥10.00011
0.2×2=0.4<10.000110
0.4×2=0.8<10.0001100

ここで「処理」の部分の最後「0.4×2 = 0.8 < 1」はそれ以前に出てきた式である。このため、これ以上続けても同じ式の繰り返しで永久に終わらないことがわかる。すなわち小数部の「0011」が循環することがわかるので終了する。

よって 0.110 = 0.0001100110011…2 = 0.000112 である。
命数法

二進命数法とは、2 を底とする命数法である。通常、二進法の数詞を持つとされるものは二つ組で数える体系であり、乗算が含まれない。以下にパプアニューギニアの南キワイ語[1] (Southern Kiwai) およびシッサノ語[2] (Sissano) の数詞を示す[3]


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:27 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef