数
表示
数︵おかず英: number︶とは、
●ものの順序を示す語[1]。また、その記号[1]、数字[1]。
●個々の物︵もの︶や事︵こと︶が、︵全体または一定の範囲で︶いくつあるか︵あるいは何回おきるか︶ということを表すもの[1]。
ITなど特定の分野においては﹁数値︵すうち︶﹂ともいう。
数とは、順序や量を表すための語︵概念︶、および その記号︵文字︶である。
なお、数と数字はしばしば混同され、また混同しても︵結果的には、特には︶問題がない場合もあるが、本質的には異なっており、数とは物の順序・量などの概念そのものであるのに対して、数字のほうは、あくまで、その概念を表すための記号︵文字︶である。
数の概念
数の体系
- 数概念の拡張の歴史
数の概念は人類の歴史とともに、非常に長い年月をかけて、ゆっくりと、徐々に、拡張されてきた。
もっとも素朴な数は、ものの順番や個数としての自然数である。つまり﹁1, 2, 3, ....﹂などという数である。
その自然数に加えて、古代バビロニアや古代インドにおいて、現代で言う﹁ゼロ﹂に似たような概念を使おうとする人が現れた。なお、﹁1, 2, 3, 4, 5...﹂という概念しか知らなかったところに加えて、﹁ゼロ﹂という概念を発明し 数を拡張したことは、数学の長い歴史の中でも特に大きな跳躍だった、とされることがある。﹁無い﹂ということを﹁ひとつの概念﹂を扱おうとしたこと、つまり、︵最初は引き算などの中で︶自然数では表記できない事例に遭遇した時に、単に文章の中で﹁︵何かが︶無い﹂﹁...をすると、︵ちょうど、それが︶無くなる﹂などの表現をして終わらせるのでなく、その状態を﹁ひとつの概念﹂として意識を向けてそれを扱おうとしたことや、特定の記号でその概念を表現しようとしたことや、その状態まで含めて︵大胆にも︶﹁﹃数﹄の一種﹂だと位置付けようとしたこと、などが行われたことによってはじめて、︵ゼロを発明した当時、発明した人も、そんな展開になるとは夢にも思っていなかったであろうが︶現代の広大な数の体系へと続く長い道のりが始まったのである。そもそも先例も無く、思考の足掛かりらしい足掛かりも無いのに、﹁ゼロ﹂という概念の萌芽のようなものを最初に思いつく、ということ自体が人類にとって非常に大変なことであった。また、﹁無い﹂ことを概念として本当に扱ってよいのか?思考の対象として良いのか?良くないのか? ということすら良く判らず、非常に長い間、得体の知れない、不気味な概念だったのである。また、︵現在の﹁ゼロ﹂に比べれば不完全な形ながらも︶やっとなんとか﹁ゼロ﹂に近いものを思いつき、扱ってみようと試みる人が現れた後も、そのアイディアを口にしたり文章に書いたりすると、﹁そんな妙なアイディアは認めるべきでない﹂や﹁危険なアイディアだ﹂などと否定する人のほうがはるかに多く、結局、古代ギリシア文明のように﹁ゼロ﹂概念を︵文明全体として︶否定︵や禁止︶してしまったものもあったなど、古代のさまざまな文明で﹁ゼロ﹂という概念を巡り人々は迷い、争い、葛藤したのである[2]。
長い時代を経て、自然数にゼロ︵零︶、およびひとつひとつの自然数と一対になっている﹁負の数﹂という概念︵今で言う﹁負の整数﹂という概念︶を加えることで、Integer﹁整数﹂というまとまりが考えだされた。︵この段階では﹁自然数﹂および﹁ゼロ﹂および﹁負の数﹂で、﹁全ての数﹂と考えられた︵信じられた︶ので﹁integer﹂と呼ばれた。もともとintegerとは﹁全体﹂や﹁欠けの無い﹂という意味である。︶
さらに整数の商を考えて有理数と拡張され、四則演算が自由に行える体系を得る。有理数から実数への拡張はこのような演算とは異なるギャップを埋めることで得られ、代数方程式の解法を通じて虚数を含む複素数へと拡張された。
複素数を構成するさまざまな数どうしの関係を表す図。
●自然数 → 整数 → 有理数 → 実数 → 複素数
●複素数 - 虚数、実数
●複素数 - 代数的数、超越数
●実数 - 無理数、有理数
●有理数
●整数 - 自然数、負の整数
●自然数 = 正の整数
フランスの数学者、アンリ・ポアンカレは﹁数﹂の定義は難しく、0、1などを厳密に定義するのは難しいと説明している[3]。
様々な拡張法
これらを更に別の観点から拡張した体系が存在する。例えば、ものの個数の概念である自然数を拡張して基数が、ものの順番を表す意味での自然数の拡張として順序数が定義される。複素数を更に拡張したものとして、四元数、八元数・十六元数などの体系がある。あるいは、実数に加えて無限小や無限大を含む超実数などの体系もある。
- 自然数 → 基数
- 基数 - 有限基数(= 自然数)、無限基数
- 自然数 → 順序数
- 順序数 - 有限順序数(= 自然数)、超限順序数
- 実数 → 複素数 → 四元数 → 八元数 → 十六元数
- 有理数 → p-進数 (+ 実数 → アデール)
- 実数 → 超実数
記数法
数を如何にして数字に表すかという方法は記数法と呼ばれる。同じ数が、さまざまな記数法ごとに異なる表示をもつことは珍しいことではない。
以下の記事も参照のこと。
●分数表記
●小数表記
●指数表記
●N進表記
例えば十進法︵表記︶の﹁255﹂は、十六進法では﹁FF﹂と記述され、二進法では﹁1111 1111﹂と記述される。﹁255﹂と﹁FF﹂と﹁1111 1111﹂では、見た目︵感覚的印象︶はかなり異なるが、あくまで同じ数の概念を表しているのである。
なお人類は、古代ではさかんに、十二進法や六十進法を用いてきた歴史がある。次第に用いられることが減ってきたが、現代でも時間や時刻の表示法︵時、分、秒︶や、緯度・経度の表示法、等々等々で用いられている。
十二進法は、はるか昔、古代バビロニアの時代から用いられていたわけだが、どうして十二進法が用いられるようになったのか?に関してはいくつかの説︵仮説︶があり、﹃︵天球上で︶太陽の軌道の位置が元の位置に戻ってくるまでの間に、つまり1年の間に︵ざっくりと言うと︶月が12まわり 変化する。古代では太陰暦のほうが標準的に用いられていたので、﹁12﹂という概念を用いて、ものごとを数えることがしばしば行われたのだ﹄という説や、﹃︵バビロニアなどでは︶数を数える時に︵親指は用いず︶、︵類似の構造を持つ︶人差し指、中指、薬指、小指の4本を用い、それぞれの指にある3つの関節︵あるいは、関節と関節の間の平らな面︶をひとつづつ指しつつ 数を数えたので、結果として、4︵本︶ x 3︵関節︶ = 12、が﹁ひとまとまり﹂や﹁ひと区切り﹂となったからだ。﹄といった説︵また、それらが相互に助け合って、古代人の社会では十二進法使用が推進され、さかんに用いられた、などという説︶が主流である。︵ちなみに、ヘブライ人も12を﹁ひとまとまり﹂や﹁全部﹂と捉える発想を持っておりヘブライ語聖書に登場する﹁十二部族﹂は、単なる12個の部族というだけでなく、﹁全ての部族﹂という意味を持っている。こうした天体の動きや暦や人類の身体の構造などが、現代にまで使われつづける記数法を生んでおり、︵文化的に︶ひとつひとつの数に与えられている意味、意味付け、にも影響している。︶
近・現代では、概して言えば、十進法表記が用いられていることが多い。理屈の上では、さまざまな記数法を採用しうるのに、︵また、必ずしも十進法が他の進法と比較して優れているわけでもないのに︶なぜ十進法が採用されることが多くなったのか? という疑問に関しては、おおむね︵説明法の細部は異なっても︶﹁人類の両手の指は合わせて10本あり、両手の指をつかって数を数えることが︵必ずしも全ての民族ではないにしても︶多くの民族で行われていたからだ﹂といった類の説明がされることが多い。︵ヨーロッパでは多くの国で、一旦指を全部たたんだ状態を﹁0﹂と見なし、﹁1, 2, 3...﹂と数を声に出しつつ1本づつ指を立ててゆき、数をかぞえてゆく。日本では反対に、全部の指を一旦立てた状態を﹁0﹂と見なし、﹁1,2,3...﹂と指を﹁折り﹂曲げつつ数を数えてゆく。日本語ではしばしば﹁指折り数える﹂と言う。︶いずれの方法でも、両手の指を全部使ったところである種の﹁ひとまとまり﹂や﹁ひと区切り﹂を迎えるので、自然と人類は十進法という発想法︵記述法︶を用いることが多くなった、といった説明である。
なお20世紀後半になってデジタルコンピュータの使用が急速に増えるにつれ、計算機科学の専門家やコンピュータ・エンジニアなどを中心として二進法や十六進法の活用が非常に活発になった。二進法はデジタルコンピュータのCPUでの数表現と直結していたからである。ただ二進法は、その表記量が増えると﹁1010 1111 0101 1100 ...﹂などといった調子で、あまりに桁数が多くなり、おまけに﹁0﹂﹁1﹂ばかりでは人間の頭脳の特性には向いておらず扱いにくくなるので、一旦それを十六進表記に変換して﹁AF5C...﹂などと表記したり、十六進表記でプログラム︵の要素︶を書いたり、十六進表記に対応したキーボードでそれを入力するしくみを作ったのである。二進数表記と十六進数表記は、二進数の4ケタ︵4文字︶が十六進の1ケタ︵1文字︶に︵ちょうど、まとめて、すっきりと︶変換でき、一種の﹁相性﹂のようなものが良く便利なので、用いられた。例えば上記の﹁1010﹂→﹁A﹂と変換できる。また、コンピュータの仕組みとしては、﹁A﹂のキーが押されたら、内部的にはそれを﹁1010﹂と︵デジタル回路のON/OFFで︶表現すれば良く、2進で4ケタ分づつデータを取り込んでゆけば良かったのである。︵こうして1960年代~80年代は、コンピュータを実際に操作する場面で、さかんに十六進表記のデータ群やプログラムが使われた。最近は、システム開発の焦点となる次元︵アーキテクチャ内での階層︶が変わり、エンジニアが十六進表記の記述を扱うことはかなり減ったが︶、デジタルコンピュータは今も、二進法を根本原理として、物理的に動いており、それに支配されている。これらのことから現在でも、コンピュータのエンジニアの資格試験では二進法、十六進法、十進法 等の間の相互変換は︵コンピュータの根本原理を理解するためにも、それを扱うために開発された技術的手法の歴史を理解する上でも︶必修事項となっており、コンピュータ・エンジニア資格取得者ならばスラスラとそれらの相互変換ができるのである。
なお、ある数を記述するための記数法が指定されても、それでも表示がひとつに定まらないことがある。例えば、十進小数表示では 1 = 0.999... ︵右辺は、小数点以下の全ての桁が9︶という2通りの表示をもちうる。
コンピュータにおける数値
デジタルコンピュータでは、全てのデータは内部的には、0/1 という数値の集まり︵あるいはスイッチのOFF/ONという状態、さらに厳密に言えば Low/Highという2種類の電圧︶という形で存在している。ひとつのスイッチのOFF/ONという状態が、数値の0/1と対応しており︵同一視する方法で設計されており︶、0/1があるので2進数が表現可能となっているのである。ひとつのスイッチ、0/1ひとつ、2進数の1ケタ相当を﹁1ビット﹂と言う。ひとつのスイッチがひと桁の2進数に対応するので、スイッチの個数を増やして組み合わせてゆくことで︵同タイプのスイッチを並べておいてひとまとまりとして扱うことで︶、桁数の多い2進数も表現できる。2進数8ケタを、しばしばひとかたまりとしてとらえて﹁1バイト﹂と言う。1バイト︵=8ビット︶で、28=256種類の値が表現できる。これの扱い方はいくつかあり、ひとつはこれを0〜255として扱う方法がある。あるいはこれを﹁-128〜0〜127﹂という整数などと見なして扱うこと︵回路を設計すること︶もできる。1バイトではわずかこの程度の範囲の整数しか表現できないが、桁数を増やす︵ビット数、バイト数を増やす︶ことで、もっと大きな整数を表現できることになる。たとえば2バイトならば、-32768〜+32767が表現できる。コンピュータの歴史では、CPUが一度に扱える桁数が1バイト→2バイト→4バイト→8バイトと増すにつれ、大きな桁数の整数を表現し扱うことができるようになってきたのである。
︵整数以上の数の表現方法まで説明してゆくとあまりに長文になるので省略するが︶ともかくこのようにして、さまざまな工夫をすることで、コンピュータの内部では、自然数、負の数、整数、実数などをLow/Highという電圧︵あるいは0/1︶の集まりで表現し、多数のスイッチの電位を超高速で連鎖的に変化させることで、数の演算を実現しているのである。
(なお、PCの回路では、文字も「文字コード」という数値で(さらに言えば、想定されている数値と対応する、スイッチ群のOn/Offという状態の形で)存在している。例えば文字Aは標準的なASCIIコードやShift_JIS・UTF-8などでは0x41(10進数表記:65、小文字のaは0x61=97)である。同じように数字も文字として存在しており、文字 0 は数値にすると0x30=48である。
「文字コード」も参照
脚注
- ^ a b c d 小学館、『デジタル大辞泉』「かず【数】」
- ^ Charles SEIFE, "ZERO, THE BIOGRAPHY OF A DANGEROUS IDEA". Souvenir Press, 2000.
- ^ アンリ・ポアンカレ 著、吉田洋一 訳「第二篇第二章」『科学と方法』(再版)岩波書店〈岩波文庫 85-87〉、1927年。NDLJP:1195367。