「二進法」の版間の差分

削除された内容 追加された内容
新規作成 (会話 | 投稿記録)
「たし算表」をリンクとともに追加
17行目:
二進法を用いれば 0 と 1 の二種類の[[数字]]のみで零を含む任意の[[自然数]]が表現可能であり、負号と合わせることで[[整数]]が表現可能である。更に小数点を合わせて 4 種類の記号のみで[[実数]]の表現が可能である。
<!--ここに、[[誤った二分法]]への言及と思われるものがあったが、少なくともこの節にはふさわしくない。削る。-->
 
=== たし算表 ===
{| class="wikitable" style="text-align:right; line-height:1.3em;"
! || 0 || 1
|-
! style="width:1.3em" | 0
| style="width:1.3em" | 0 || style="width:1.3em" | 1
|-
! 1
| 1 || 10
|}
 
== ディジタル機器での使用 ==
{{See also|コンピュータの数値表現}}
電子式[[コンピュータ]]の[[電子回路]]などの[[ディジタル回路]](ディジタル[[論理回路]])、[[磁気ディスク]]等の記憶メディアでは、[[電圧]]の高低、[[磁極]]の N/S など、[[物理学|物理]]現象を二状態のみに縮退して扱う(離散化などと言う<ref group="注">量子化とも言うが、量子物理におけるいわゆる量子のような意味(重ね合わせ状態など)ではない。</ref>)ので、それに、真と偽の2つの値(2値の[[真理値]])のみを使用する二値論理(しばしば、電子的には [[H]][[L]]、論理的には [[T]][[F]] という記号が使われる)をマッピングする。さらにそこで数値を扱うには、それに二進法をマッピングするのが最適である。もし、[[十進法]]を用いようとすると十種類の状態が必要であるが、それだと2の[[累乗|冪]]ではないので都合が悪い。[[二進化十進表現]]を用いたり、[[電卓]]や[[IBM]] の [[POWER]] のように十進法による直接演算機能を持つコンピュータもあるが、回路としては二値方式(二値論理方式)である。
 
多くの応用で見られるように[[桁]]数が有限の場合は、数学的に言うなら「[[有理数]]の部分集合」が表現されているわけであるが、通常は「有限精度の実数」が表現されている(数学的には、それはもはや実数ではないが)と解釈される。
28 ⟶ 39行目:
2種類の記号のみで、負の範囲の値(負の範囲の整数)も扱うには、広く一般的に用いられている方法は、最上位[[ビット]](MSB)の重みを、2<sup>N</sup>ではなく &minus;(2<sup>N</sup>) であるとするものである([[2の補数]]を参照)。この方法は、そのビットパターンが、加減(及び、乗)の演算において特別な処理が不要なものになる、という特長を持つ。ただし、溢れ(オーバーフロー)の扱いが違ってくる(これは、例えばx86プロセッサにおける、キャリーフラグとオーバフローフラグの違いのことである([[ステータスレジスタ#キャリーとオーバーフロー]]を参照))。また固定長の場合に表現可能な範囲が、最小の値(負の側の絶対値が最大の値)のほうにひとつはみ出している、という扱いが面倒な場合がある特徴があって、たとえば8ビットで表現可能な範囲は &minus;128, &minus;127, 〜 &minus;2, &minus;1, 0, 1, 〜 126, 127 というようになっている。これに関しては、例えばC言語の標準規格のように、他の表現法も考慮し、全ての符号付き固定長のデータ型は、signed char であれば &minus;128 までではなく &minus;127 まで、などといった仕様になっている、といった場合がある。
 
== [[十進法]]から二進法への変換方法 ==
[[十進法]]から二進法への変換方法」などといったものを考える必要はない。どちらも'''数の「表現法」'''に過ぎないのだから、単に「表現法 → 数 → 表現法」といったようにして変換すれば良いのである。
<!--
=== 正の整数 ===
148 ⟶ 159行目:
 
== 命数法 ==
'''二進命数法'''とは、2 を底とする[[命数法]]である。真の二進命数法では、2<sup>''n''</sup> に対応する[[数詞]]があり、数はそれらの和で表される。[[自然言語]]では、このような命数法は[[パプアニューギニア]]の[[メルパ語]]<ref>{{Citation|title=Ethnologue: Languages of the World|year=2005|url=http://www.ethnologue.com/show_language.asp?code=med|contribution=Melpa|edition=15|editor-last=Gordon|editor-first=Raymond G., Jr.|accessdate=2008-03-12}}</ref> (Melpa) でのみ知られている<ref name="Lean">{{Cite book|last=Lean|author=|first=Glendon Angove|title=Counting Systems of Papua New Guinea and Oceania|url=https://web.archive.org/web/20160103105622/http://www.uog.ac.pg/glec/thesis/thesis.htm|date=|year=1992|publisher=Ph.D. thesis, Papua New Guinea University of Technology|chapter=TALLIES AND 2-CYCLE SYSTEMS|chapterurl=https://web.archive.org/web/20160304132322/http://www.uog.ac.pg/glec/thesis/ch2web/ch2.htm}}</ref>。
{| class="wikitable" border="1" style="text-align:center"
! style="width:2em" | !! [[メルパ語]]
|-
! 1
182 ⟶ 193行目:
| engaka pamb ralg pip
|}
通常、二進法の[[数詞]]を持つとされるものは二つ組で数える体系であり、[[乗算]]が含まれないため、真の二進法ではない。以下にパプアニューギニアの[[南キワイ語]]<ref>{{Citation|contribution=Kiwai, Southern|title=Ethnologue: Languages of the World|edition=15|url=http://www.ethnologue.com/show_language.asp?code=kjd|editor-last=Gordon|editor-first=Raymond G., Jr.|year=2005|accessdate=2008-03-12}}</ref> (Southern Kiwai) およびシッサノ語<ref>{{Citation|contribution=Sissano|title=Ethnologue: Languages of the World|edition=15|url=http://www.ethnologue.com/show_language.asp?code=sso|editor-last=Gordon|editor-first=Raymond G., Jr.|year=2005|accessdate=2008-03-12}}</ref> (Sissano) の数詞を示す<ref name="Lean" />。
{| class="wikitable" border="1" style="text-align:center"
! style="width:2em" | &nbsp; !! 南キワイ語 !! [[シッサノ語]]
|-
! 1
212 ⟶ 223行目:
同様の二進法的組合せの使用は、アフリカの[[ヨルバ人]]が行っていた占い [[:en:Ifá|Ifá]] にもあり、[[中世]]ヨーロッパやアフリカの[[ジオマンシー]]にも見られる。2 を底とする体系はサハラ以南のアフリカでジオマンシーに長く使われていた。
 
1605年、[[フランシス・ベーコン (哲学者)|フランシス・ベーコン]]はアルファベットの文字を2種の記号の列で表す体系を論じ、任意の無作為なテキストで微かに判別可能なフォントの変化に符号化できるとした。一般理論として彼が指摘した重要な点は、同じ方法をあらゆる物に適用できるという点であり、「2種類の異なる状態をそれらの物で表現できればよく、[[]][[トランペット]][[]][[松明]][[マスケット]][[マスケット銃|銃]]など同様の性質があればどんなものでもよい」とした<ref>{{citation |last=Bacon |first=Francis |authorlink=フランシス・ベーコン (哲学者) |title=The Advancement of Learning |url= http://home.hiwaay.net/~paul/bacon/advancement/book6ch1.html |accessdate= |date= |origyear=1605 |volume=6 |publisher= |location=London |language= |isbn= |doi= |doi_brokendate= |bibcode= |id= |page= |pages=Chapter 1}}</ref>。これを[[{{仮リンク|ベーコンの暗号]]|en|Bacon code}}と呼ぶ。
 
数学的に二進法を確立したのは[[17世紀]]の[[ゴットフリート・ライプニッツ]]で、"Explication de l'Arithmétique Binaire" という論文も発表している。ライプニッツは現代の二進法と同じく、1 と 0 を使って二進法を表した。ライプニッツは[[シノフィリア|中国愛好家]]でもあり、後に「易経」を知って、その六十四卦に 000000 から 111111 を対応させ、彼の賞賛してきた中国の哲学的数学の偉大な成果の証拠だとした<ref>{{citation |last=Aiton |first=Eric J. |authorlink= |title=Leibniz: A Biography |year=1985 |publisher=Taylor & Francis |location= |isbn=0-85274-470-6 |doi= |pages=245–8}}</ref>。
 
[[1800年代]]中頃、[[イギリス]]の数学者[[ジョージ・ブール]]が[[ブール代数]]([[ブール論理]])により、二進的な数(ここで言う「数」は、数学的な広義の意味であり、普通の二進法の対象である、数値という意味ではない)の代数による[[命題論理]]の形式化を示した。
 
[[1936年|1936]]-[[1937年]]の中嶋章と榛沢正男による「[[継電器]]回路に於ける単部分路の等価変換の理論」、1937年の[[クロード・シャノン]]による "A Symbolic Analysis of Relay and Switching Circuits" により相次いで、リレーのようなスイッチング素子による回路([[ディジタル回路]])の設計がブール代数によって行えることが示され、[[1940年代]]に始まり今日まで続くコンピュータの理論の基礎のひとつとなっている。
<!--
1937年[[11月]]、[[ベル研究所]]に勤務していた[[ジョージ・スティビッツ]]がリレーを使った計算機 "Model K" を完成させた。これは二進数の加算ができる装置である。ベル研究所はこれを受け、スティビッツを中心とした正式な研究プログラムを[[1938年]]末に開始した。[[1940年]][[1月8日]]に完成した "Complex Number Computer" は[[複素数]]の計算が可能だった。1940年[[9月11日]]に[[ダートマス大学]]で開催された[[アメリカ数学会]]の会議でデモンストレーションが行われ、スティビッツは[[テレタイプ端末]]でコマンドを打ち込んで、電話回線経由で遠方にある計算機を操作して見せた。これが電話回線経由で遠隔から計算機を使った世界初の事例である。この会議に出席しデモンストレーションを目にした人物として、[[ジョン・フォン・ノイマン]]、[[ジョン・モークリー]]、[[ノーバート・ウィーナー]]らがおり、彼らはその経験について文章を残している。
↑この記述は二進法の歴史としては瑣末に過ぎるし、コンピュータ史として興味深いかもしれないがやはり瑣末に近いと思う(「ディジタルで計算する機械」は同時代には既にいくつかあった)。最後のくだりから見ると「ENIACはパクリだ」とか言いたいがためだけの記述にも見える。
-->