デジタル
デジタル(digital, ˈdiʤətl)は、以下のような意味の単語。
機械で情報を扱う際の表現方法の一つで、情報をすべて(整数のような)離散的な値(飛び飛びの値)の集合として表現し、段階的な(つまり飛び飛びの)物理量に対応付けて記憶・伝送する方式(を表現するための形容詞)。対義語はアナログであり、そちらは情報を連続した物理量で表現する方式である。
特に二進数で表現されたデータで構成されているもの。
「指を使って行った〜」という意味の形容詞。
なお日本産業規格 (JIS X 0001, JIS X 0005) では「ディジタル」と表記される。
古い学術文献や古い通商産業省の文書などでは「計数」という訳語も使われていた時期があったが今は使われない。ちなみに「計数」という言葉はやや曖昧で、「計算で数値を出す」という意味もあり、その意味も含む場合は、単純な数式でも、数の組合せによっては整数の範囲越えて有理数や無理数や実数まで含まれてしまう可能性があり、もはやデジタルではなくなってしまう。また「計数」だけだと十進数で表現されたものも含んでしまうので、その意味でも英語のdigitalとズレが生じている。英語のdigitalは、もともと基本的に十進以外である。 →#表記
英語のdigitalは形容詞で、語源はラテン語の「digitus」(ディジトゥス、「指」の意)であり、それがラテン語の中で「digitalis」(ディジタリス)という形に変化し、それが15世紀なかばに英語に入り「digital」となり「10より小さい数を指に関連付ける(指に関連づけて数える)」という意味になり、1650年代に「指に関連づける(指に関連づけて数える)」という意味になった。「digital」が「『(10より小さい)数』を使っている〜」という意味の形容詞として使われるようになったのは1938年以降のことであり、特に、1945年以降に現れた、(それまでのアナログコンピュータと対比されるような)digit(※)方式 の(十進以外、典型的には二進方式の)コンピュータのことを形容するために使われ始めた
(※)英語の「digit」には「十進法以外、特に二進法で表現された要素」という意味がある。
コンピュータがデジタル方式だということは、コンピュータのCPU内(の核心部分CPU内の演算器やレジスタ類)での数の表現が二進方式になっていることを意味しており、1か0という値をとるビットが有限個(※)並んだもの(ビット列)で数が表現されている。
(※)あくまで有限個である。よくある個数は8/16/32/64のいずれかである。つまり8ビットコンピュータ/16ビットコンピュータ/32ビットコンピュータ/64ビットコンピュータである。デジタルコンピュータのCPUの内部では、限られた桁数でしか数を表現できない。つまり無限の桁があるような実数はCPUの内部では表現できない。無限の桁の実数を扱えないのでしかたなく代用で使う《浮動小数点》という手法や、そのデメリットについては後述。
二進数方式でCPUが動いているデジタルコンピュータが十進法の数を扱う場合は、一旦、その十進数を二進数へと変換する基数変換を行っている。 コンピュータのユーザは、ディスプレイなどに10進数の数字が表示されているのを見るので、デジタルコンピュータの技術的な知識が無い人などは、なんとなく、CPUが10進数をそのまま扱えるかのような錯覚を抱いてしまうかも知れないが、本当はCPUは10進数を扱っていない。CPUは常に、2進数しか扱っていない。デジタルコンピュータというのは、10進数が内部に存在しているような"ふり"をしつづけているだけである。キーボードでたとえば「7」「8」「9」などのキーが押されても、キーが押されたその瞬間に、回路的に(ほぼ物理的に)「0111」や「1000」や「1001」などの2進数に変換する。そしてデジタルコンピュータは、その後の作業をすべて2進数で行っておいて、最後の表示の段階で、10進数の外見を持つ視覚的なイメージ(文字キャラクタ)を割り当てて表示しているから、一般ユーザには さも作業の途中でも10進数を扱っている "かのように" 感じられているだけである。 普通の人々の日常生活では10進数ばかりを扱うのだから、そうした普通の生活の役に立つようにとの配慮で、10進数をそのまま扱えている "かのように見せる" コンピュータを、技術者たちがさまざまな技術を駆使して設計しているのである。
ビット列の各ビットを反転することで《1の補数》が得られ、それに1を足すと《2の補数》が得られる。
ある数と、(その数の)2の補数との加算を行うと、紙の上の計算では最上位の桁から桁上がりが起きるが、有限の桁しかない加算器では最上位の桁の桁上がりが無視される仕組みになっているので演算結果が0になる、という注目すべき性質がある。デジタルコンピュータのCPUの演算器では、もとの数の2の補数は「0 - もとの数 = - もとの数」を意味することになる。この性質を利用してCPU内の演算では減算 A-Bを 「A+ (-B)」と書き換えることができ、さらに「A+ (Bの2の補数)」と書き換えることができる。つまり負数に2の補数を使うことで、減算という作業を加算と同様に処理できることになり、演算回路を単純なもので済ますことができる。
デジタルコンピュータで小数点数(小数点がついているような数)を表現する方法としては、固定小数点表示 / 浮動小数点表示 という2つの方法がある。それぞれメリット、デメリットがある。固定小数点方式は、小数点の位置を固定するので数値表現の範囲が狭く、大きな数や小さな数の表現には向かないし、オーバーフローも生じやすい、というデメリットがあるが、情報落ちによる誤差は発生しにくい、演算が浮動小数点よりも高速というメリットはある。一方、浮動小数点方式の性質は、その逆で、小数の位置を固定せず、数値を仮数・指数・符号の3つの部分で表現することで、広い数値範囲を表現できるというメリットがあるのだが、《情報落ち》や《桁落ち》による誤差が発生する。(浮動小数点方式で計算すると20%もの誤差を生じることがあり、深刻な事故の原因にもなる。→#特徴の節の後半で説明。) なお『連続的に変化する値を扱うには「桁数を無限にした実数で表現する方法もある」』というような話は、あくまで数学の話でしかなく、「digital デジタル」の話つまりデジタルコンピュータの話ではない。digitalという言葉は、あくまで、あるタイプのコンピュータの根本原理をアナログコンピュータと対比して指すために始めた用語であり、コンピュータの根本的な動作をになう部分つまり中央処理装置(CPU)が扱うのはわずか2進で8桁だの64桁で表現されたデータだけであり、無限の桁のデータは全く扱えない。両者は全然別の話である。コンピュータの実際の動作原理は、数学の抽象的で理論的な世界とは、かなりかけ離れたものとなっている。
二進方式で数を表現すると《2倍にする掛け算》(つまり x 2)は、単純に全ての桁を左へシフト(ビットシフト)つまりズラすだけで出来るというメリットがある。逆に「÷2」という演算をしたかったら、右へ1桁シフトすればよい。CPUの機械語にはこの便利な性質を利用した命令(シフト演算命令、ビットシフト命令)が実装されている。コンピュータのCPUに単純なシフト演算命令を与えるだけで上記の演算ができる。
また、4倍にしたければ2桁左へシフト、8倍にしたければ3桁左へシフトするだけですむ。「÷4」「÷8」という演算をしたかったら、基本的には、それぞれ右へ2桁、3桁ズラすだけで済む。つまりシフト命令を何度か繰り返せばよい。(ただし何度も言うが、デジタルコンピュータのCPU内部で数を表現しているビット列(二進数)の桁数は有限であり、演算で溢れた桁の情報は消滅してしまう。)
では、デジタルコンピュータのCPUは 2^n(2のn乗)以外の乗算の演算をどうやるかと言うと、シフト演算と加算を組み合わせる。たとえば、ある数 m を(x 5)つまり5倍にする演算の場合は、mを左へ2ビットシフトしたうえで、それに m を加算するという方法で実現する。
なお、アナログ値つまり連続した量をデジタルなコンピュータで扱わなければならなくなったら、量子化を行う。話を分かりやすくするために単純化し、いま仮に3ビットつまり二進数表記で3桁、十進表記で「0,1,2,3,4,5,6,7」という離散値を用意した上で量子化する状況でかつ仮にデータは0〜7までの範囲の連続値の状態だとしよう。その上で仮に3.7568214......というような実数(のような)値が与えられてそれを量子化するとしたら、誤差を含んでいることは承知の上で、4と表現する。この量子化の誤差の大きさは大まかに説明すると、どれだけの離散値を用意できるかということにかかっていて、離散値の数が少ないと誤差が大きく、離散値の数を多くすると誤差が小さくなる。たとえば3ビットの代わりに8ビットの枠を用意できれば256種類の離散値で表現できることになり、平均的な誤差が小さくなる。つまり表現するための2進数の桁数を増やしてゆけば、誤差が小さくなる。ただし桁数を大きくしてゆくと、基本的には、それに応じてデータのサイズも大きくなってゆくというデメリットがあり、記憶装置の容量をより多く食ってしまうことになる。
マイクロコントローラの中には外部からのアナログ入力(電圧の連続的な変化)を受け付ける入力ピンをいくつか備えているものもあり、それだとアナログ値をデジタル値に変換することができる。またデジタルシグナルプロセッサもアナログ信号をデジタル信号に変換する役割を担う。
デジタルデータは離散値で構成されているので、アナログデータと比べると劣化しにくい特性をもつ。
デジタルデータの伝送や記録・再生などを行う場合、デジタル量もアナログ量と同様に電圧・電流などの電気信号に置き換えて取り扱われるが、外乱が生じて信号にノイズが混入した場合、アナログ処理では特別な処理を行わない限り信号に混じったノイズを取り除くことが困難であるが、これに対し、デジタル処理では、数値は飛び飛びで離散しており、中間値をもたないので、ノイズによって生じた誤差が一定量以下ならばそれを無視することで、元のデータが保たれる。この数値は、六進数や十進数のような「素因数が複数」の記数法でも適用でき、データが整数表現の場合、1がノイズによって0.8(10)(=4/5)や0.4(6)(=2/3)や1.2(十進数だと6/5、六進数だと4/3)に変化しても1と扱う回路を用意しておけば良い。
実際の記録・伝送などでは上述の範囲を越えるノイズが混入する場合がある(例えば、1が0.4(10)(=2/5)や0.2(6)(=1/3)、または1.6(10)(=8/5)や1.4(6)(=5/3)に変化すると、異なる値0または2となる)が、デジタルコンピュータでは、そのような場合でも誤りを検出する手法が発明されており、データを予め誤り訂正符号などを使って冗長化しておくと、それを使い逆算して補正したり、補正出来ない場合は無視したり、誤りの発生を検出して再送を要求したりすることができ、信頼性の高い伝送や再生を行うことができる。
なお「デジタルコンピュータなら、いつでも計算が正確」と思うのは幻想でしかない。特に浮動小数点方式で演算する場合は誤差が生じるということには注意を払う必要があり、数値が表現可能な数値範囲を超えてしまう可能性にも十分に用心する必要がある。分かりやすい出来事を紹介すると、たとえば1991年、アメリカ軍のパトリオットミサイルは時間計算の誤差が原因で誤作動して死者が出てしまったし、欧州宇宙機構のアリアン5型ロケットなどは1996年の打ち上げ時にわずか40秒で爆発し、このロケットのために費やした10年の歳月および70億ドルの開発費および搭載した5億ドル相当の装置が失われてしまった。アリアン5型の爆発の直接の原因は、慣性基準装置(IRS)のソフトウェアが水平方向の速度を表現する64ビット浮動小数点数を16ビット整数に変換したため、16ビット整数の最大値である32768を越えてしまい変換に失敗したことであった。
特に浮動小数点方式で非常に近い2つの実数の引き算を行うと、有効桁がひどく損なわれて非常に大きい誤差が発生することがある。たとえば32ビット(単精度)の状態で2つの近い実数の引き算をさせると、数学的に正しい値とは約20%も計算値がズレる。(しばしば、公式など普通の数式に書かれている普通の順に計算すると桁落ちが生じ、有効桁数が著しく減少する。プログラミング(コーディング)の段階で常に注意深く、桁落ちが起きる、桁落ちが起きる、と意識しつづけて、計算の順番を不自然なまでに入れ替えないと防げない。)
また最小値に近い数値を扱っていないかどうかにも注意を払う必要がある。
デジタル処理では、定義された最大値を超えた場合には桁溢れ(オーバーフロー)となり、以後の演算処理の結果は保証されない。また、最小値に近い数値では量子化誤差が無視できず、S/N比の劣化として現れることがある。一方、アナログ処理の媒体(磁気テープ、供給電圧や電線など)は材料のバラツキや製造上の品質管理の都合上、仕様より高めの限界値で製造される(例えば全ての部品のばらつきが低い方向に振れても仕様を満たす設計の場合、同じ条件で高い方向に振れた場合は仕様より高めの限界値となる。)。また、電線などの伝送路も汎用品を使った場合は過剰に仕様より高い限界値を持っている。このため、入力が仕様より超過した場合、少しの超過では影響が少なく、媒体の真の限界値を超えると過大な影響がある。
デジタイズアナログデータをデジタルデータに変換することを「デジタル化する」、「デジタイズする」などという。
デジタルデータをそのまま扱う場合(単純なリニアサンプリング)について述べる。
実際のデジタル処理では、二進数1桁をビットとし、8ビットなどのまとまった単位をオクテットまたはバイトとして取り扱い、さらにそのまとまりをワードという単位として取り扱うことが多い。これは処理装置や記憶装置の語長に合わせて効率よく使えるようにするためである。
符号化とは対象を上限のある整数に変換することで有り、様々な分野でそれぞれ適切な表現形式を用いてデータを符号化している。
数値の場合、上限(範囲)の定められた整数は既に符号化されている。小数以下を含む数値の場合、指数表記として符号化する浮動小数点型、任意の位置を小数点とする固定小数点型などとして扱える。記数法を用いずに全ての数字に独自の命名をして扱うことや、十進数や十六進数や六進数や九進数といった「1/3が割り切れる」「一の位が3または0ならば3の倍数」の記数法を用いたりすることが出来る。
音声は、任意の時間とその地点の音量でPCMなどによる方法で符号化できる。
音楽は、 周波数、時間軸、音色などをデジタル化出来る。楽譜を「電子化」した物としては、機械演奏用のMIDIやMML、電子出版や配布用としてPDFなどがある。演奏した物を音声と同じ方法で符号化できる (記述が不正確)。
絵、映像は、平面を等間隔で区切り、光をRGBなど色の成分に分解し、各色の明るさなどを数値化する。その情報を任意の時間で連続記録すれば動画となる(不正確な記述)(一般的な動画には音声がついているが、技術的には関連は無く、応用技術として単に動画と音声を同時に再生している。)。
図形はベクタ形式による(問題点 - 全部そうだというような書き方をしてよいのか?)。この形式は、狭義には線分の始点と終点の座標を数値で記録する。広義には、各種の図形に対して、例えば円なら、「図形コード=円、中心座標、半径」を記録する。これらのデータからの例えば円を描くことは図形表示ソフトウェアに任せる。また、絵や、映像と同じ方法でも符号化できる。
2000年代では、一般的には「デジタル」と表記されることが多い。
一方、日本産業規格 (JIS X 0001, JIS X 0005) などでは「ディジタル」という表記が用いられている(「ディジタル計算機」「ディジタル化する」「ディジタルデータ」など)。(そちらは disk→「ディスク」、display→「ディスプレイ」などと同様の表記法を採用していることになる)
かつてはディジタルと書かれることも多く、これは1955年に文部省が発行した『国語シリーズ27 外来語の表記 資料集』の影響が大きく、同書で原音がディの音はジとされたが原音の意識がなお残っている場合はディと書くことが許容され、資料集は現状整理という位置付けだったようだが同年版の『記者ハンドブック』(共同通信社)の外来語の書き方の欄などメディア関係者が参照する資料に主要な記述がそのまま転載、事実上のガイドラインとなっていた。時代が下って原音に近い外国語の発音が広まったことから1981年の『記者ハンドブック』第4版では原音のティ、ディ、テュ、デュで慣用が定まっている場合はチ、ジ、チュ、ジュで書くとなっているが、デジタルの語は1970年代末までに慣用が定まり、使われ続けている。それにより、デジタルネイティブのように別の時期の表記が合わった外来語も存在する。
学術分野では文部省資料の影響はあまり強くなく、1960年代から1970年代の専門書ではディジタル表記が圧倒的に使われていた。1960年代の一般紙では最先端の技術だった電子計算機をディジタル型、ディジタル電子計算機と書かれ、事実上のガイドラインがあっても1つの表記以外をあまり確認できなければ新聞も倣ったとみられる。
デジタルの表記が広まった理由の1つはデジタル時計で、1965年の東京時計製造のパタパタ時計の新聞広告には東京デジタルとあり、1968年にソニーがパタパタ時計とラジオ一体型のデジタル24を発売、メディアで宣伝するため文部省資料と同じ表記になったとみられる。1970年代後半にはデジタル腕時計のブームで広告にはデジタルの語が踊り、1978年にカシオ計算機が山口百恵を起用したCMで山口が歌う「デジタルはカシオ」のフレーズが流行、学術分野以外ではデジタルの語で急速に固まった。広辞苑第三版(1983年)及び第四版(1991年)はデジタルがディジタルを参照させるようになっており、逆になったのは1998年の第五版であった。
2021年9月1日にデジタル庁が発足した。
2021年9月に『デジタル社会形成基本法』が施行された。ここで言うデジタルは「インターネットその他の高度情報通信ネットワーク」や「電磁的記録」、人工知能などのことである。