2進数とコードの混同
コンピュータでは,0と1のbit 「ビット」を複数並べて,その並べられたビット列をどのように読むかを用途毎に決めて,全ての情報を表しています.「数値は2進数で入っている」ということは,ほぼ正しいですが,「全ての情報は2進数で入っている」ということは必ずしも正しくありません.
進数や進法は,@数えるとき,1個で使う数の種類が限られている,A桁の概念があり,1個で数える量に足りなければ上の桁へ進んで,2個の桁で数える,という言葉です.例えば,10進数なら,数えるために使う数は,0, 1, …, 8, 9の10個で,11個以上を数えるとき,上の桁(10の位,100の位,…)を使います.2進数なら,数えるために使う数は,0, 1の2個で,3個以上を数えるとき,上の桁(2の位,4の位,…)を使います.10進数の0, 1, 2, 3, 4は,2進数では,0, 1, 10, 11, 100です.数値ですから加減乗除の演算をするとき, 桁上げや桁下げがあります.
桁はdigitで,桁に0, 1, …, 8, 9の10個が入るとき,decimal digit「10進桁」といいます.桁に0, 1の2個が入るとき,binary digit,略して,bit 「ビット」といいます.
コンピュータで数値を記憶しているとき,これは実際には様々な形態がありますが,数値は2進数で記憶されている,といってよいでしょう.演算もできます.
コンピュータに入る情報として,様々なコード(符号)があります.
その代表的なものに,character code 「文字コード」があります.これらも0と1を使います.でも,2進数ではありません.世界中の文字の個数は膨大です.それらをコンピュータ上で表すために,いろいろな方法,コードが用意されています.ここでは,それらを説明する目的ではないので,英語や日本語を表すコードについてのみ言及します.
英語のアルファベット26文字(大文字と小文字で倍)や数字,各種記号その他を表現するために,8個の0と1を通常並べます.これが,8ビットのISOコード,ASCIIコード,JISコードです.1bitに0か1だから,8bitなら,0と1の重複順列で,2の8乗,すなわち,256通りの情報,この場合は,文字の種類を表せます.そんなに文字の種類はないので,空欄もあります.
例えば,数字の0と9は,”0011 0000”, “0011 1001”,文字AとZは,”0100 0001”, “0101 1010”, 文字aとzは,”0110 0001”, “0111 1010”です.
変化する部分を順次見れば,2進数と見なせますが,8bit全体は,2進数ではありません.なぜなら,"数字には,頭に"0011",英大文字には,頭に"010",英子文字には,頭に"011"というのが付いています.数字の場合,このままでは加減乗除するものではありません.数字でも,英字でも,残りのビットでは順次桁上っていきますが,最後まで来て,例えば,数字の9の次の0011 1010”は,数字ではなく,":"が割り振られています.8bitで表現可能な256種類のビット列の1つずつに,約束として,ISO(国際規格),ASCII(アメリカ規格),JIS(日本工業規格)で,割り当てている文字コード(文字符号)です.数字の場合のみ,この8bit(実際は下4bit)を10進1文字とみなして,計算もできる2進化10進符号(Binary Coded Decimal)というのもあります.話が広がりすぎるので,ここまでにしておきます.
binaryは,数の時は「2進」,それ以外は「2値」というのが本来は正しい言い方です.binary codeは,本来は,2値コード.文字コードは,8bitのbinary codeで,carry 「桁上げ」もしないのに,「8bitの2進コード」というのは,本来はおかしいのです.「8bitの2値コード」が本当でしょう.でも,「8bitの2進コード」とこの分野では言っているから,それをわかっていて使うのは,いいでしょうね.
日本語は,256文字では全然足りません.普通は,16bit使います.2の16乗,すなわち,65,536種類の文字を使うことが可能です.実際は,JISでは,6,879文字しか使っていません.未定義の部分がかなりあります.これも本当は,「16 bitの2値コード」ですが,「16 bitの2進コード」と通常は言っています.
カラー画像で説明すると長くなるので,白黒画像で説明します.1枚の静止画像は例えば,1024×768のbit mapで表します.1024×768の点があるということです.白黒画像だと,1つの点が白か黒かで,全体を見渡せば,ある形や風景,文書に見えるということです.0が白を,1が黒を表します.白黒画像も2進数で表されるというのは,間違いです.0と1, 白と黒のコードです.
命令コードも然り.音声データも然り.
「コンピュータの中では,全ての情報は2進数で入っている」という言い方は,正しくありません.ある約束の2値の順列・組合せで入っているのです.
bit | ビット | ||
decimal digit | 10進桁 | ||
character code | 文字コード | ||
ISO code | ISOコード | ||
ASCII code | ASCIIコード | ||
JIS code | JISコード | ||