デジタル情報に関する世界観です。
人間が使う数字というのは、特別でない場合は10進数が基本です。これは、「指で数えることができるのが1から10までだから」と言われることがあります。
これに対して、たまに使われるのが12進数です。たとえば、英語の数字には11や12までは固有の呼び名があります。時計でも、0時から12時までを一時間とします。この理由は、「1でも2でも3でも4でも6でも割り切れる」という数の計算上の利点があるからです。これに対して5や10でも割り切れる60進数は、秒や分、あるいは中国の暦などに使われています。
これに対して、2進数はちょっと異なります。2進数は、パソコンやIT技術において使われることが多いですが、これは「1か0か」というのは「もっとも情報量が少なく単純」であり、同時に「さまざまなハードウェア方式で表すことができる」からです。
2進数は、0と1しかありませんが、単純すぎるために、たとえば真空管がつくかつかないか、半導体の電気が通るか通らないか、といった「機械・電子技術で表しやすい」のです。
そのため、CPUの機械語命令やメモリの情報はすべて2進数で0と1で表されます。たとえば00110011となります。しかしながら、このような記法は機械にとっては理解しやすいですが、人間にとっては理解し辛いものです。
2進数を人間でも分かりやすくすることができるのは、まず、8ビットや16ビットごとにビットをまとめることが多いため、8進数や16進数を使うことです。16進数では、2進数を8ビットで表した時に、桁ごとの情報がいっぺんに表せて便利です。たとえば00001111であれば0F(10進数でいう15)であるとできます。複雑な例では、01011101なら5Dと表せます。また、メモリでデータを記録・参照する時に、情報は8ビット(1バイト)ごとにアドレスがふられ、このアドレスによってバイト列を得られます。ここでも、8進数や16進数が使われます。CPUは計算もできますが、メモリ上のデータの参照や変更、そしてI/Oデバイスとのやり取りもすることができます。
機械語でプログラムを記述するために、このような16進数では、まだ、人間に理解し辛いです。16進数の機械語命令を、人間に分かりやすい「英単語の命令」(ニーモニックと呼ばれる)から翻訳するソフトウェアをアセンブラと言い、これをアセンブリ言語と言います。
コンピュータは、0と1を使った二進数で計算を行う。
この時、数値のとり得る値の範囲をbit(ビット)という単位で表す。1bitでは0と1の2つの値を表せる。
8bitを1byte(1B、1バイト)と呼び、大きくなるとKB(キロバイト、1024B)やMB(メガバイト、1024×1024B)となる。
CPUなどでは、bitは8bit, 16bit, 32bit, 64bit, 128bit, 256bitと2の累乗を倍々してアーキテクチャの性能が向上していく。
二進数とは、10進数では9の次が10とけた上がりをするが、2進数では1の次が10となる。
位取り記数法では、10進数の場合、10を基数として、1桁目は基数の0乗(すなわち1)、2桁目は基数の1乗(すなわち基数)、3桁目は基数の2乗、と計算できる。
そのため、二進数は2の累乗を用いることで、1101は1×23+1×22+0×21+1×20=13と計算できる。
二進数の一番上の桁をプラスマイナスを表すために使うことも多い。
二進数を表現するのに便利なのが16進数。2進数と並んで良く使われる。
2進数と16進数は親和性が高く、0000=0 ~ 1111=F(10進数で15)として四桁の2進数の変換が容易で、FFとすればそのまま八桁にできる。
2進数の四桁をそのまま0~Fにできるため、特に値が大きくなってくると10進数に直すよりも16進数に直した方が扱いやすい。
16進数は0xをつけて0x0Fのように表す。
機械語は、16進数の命令とレジスタへの記憶を使って、CPUに順次命令を行う。
アセンブリ言語も参照のこと。
文字データは単純に数値に直される。この時、文字コードによってどの文字がどの数値に対応するかが決まる。
英語の文字コードはASCII。日本語はShift-JIS、EUC-JP、UTF-8などが良く使われる。またISO-2022-JPはインターネットメールで良く使われる。
画像・写真データは、画像を四角形のピクセル(点)の集まりに変換し、ピクセルごとに数値にする。
この時、解像度(どれくらいの量の点が同じサイズの中に集まるか)によって画像の綺麗さ(精密さ)とサイズが決まる。
画像データには、JPEG(非可逆圧縮、写真向け)、GIF(256色のみ、アニメーションが可能)、PNG(可逆圧縮、Web向け)、TIFF(追加情報が付属、スキャナなどで使用)、MPEG(動画)、PDF(ポータブルな文書形式)、BMP(圧縮しないビットマップ形式)、Camera Raw(カメラで写真を撮った時の生データ)などがある。
詳しくは以下の書籍が参考になります。
2024.09.28編集
ファイル形式Tiffは画像データにさまざまなデータ属性を追加した画像形式として知られる。
音声データは、音声の「波」に変換される。
音声データの一定間隔での離散値の記録を行うことを「標本化」(サンプリング)といい、適度に丸みをつけたりして近似値の記録を行うことを「量子化」という。
標本化の際には、「標本化定理」という定理があり、元の最大周波数の2倍以上のサンプリング周波数があれば、正確にサンプリングすることができる。
後日注記:TRON開発者の坂村健さんによる「痛快! コンピュータ学」によれば、CDへの録音の場合、44.1KHzというレートでサンプリングが行われる。これは、44,100分の1秒ごとにアナログな音声の波を分割して値を取ることを意味する。標本化定理により、44.1KHzならば半分の20KHzぐらいまでが正確にサンプリングできる。人間の耳に聞こえる高音の限界が20KHz程度であるとされるので、これぐらいで大体の音声は記録できる。
2022.11.30編集
2023.02.08編集
「徹底攻略 応用情報技術者教科書 平成30年度」を参考に執筆しました。
オーバーフローは、値がその桁数を超えてあふれ出してしまうこと。
アンダーフローは、浮動小数点数演算において、指数部が小さくなりすぎて、微小な値が表せなくなってしまうこと。
デジタル情報は、いくらコピーしても劣化しません。
これは、「似たような図形を描いてください」と伝言ゲームをするのではなく、「コンパスを使って10cmの円を描いてください」と伝言ゲームをするのに近い。
アナログなコピーでは「見た目」をコピーするため、何度もコピーしていると劣化してしまう。
デジタルなコピーでは「情報の値」をコピーするため、何度コピーしても同じ値を維持できる。
後日注記:ここで挙げた円の描き方の例は、アナログとデジタルというよりは、ラスター系ペイントソフトとベクター系ドローソフトの違いの説明に近いです。ラスター系では、ピクセルの点情報だけを保持するのに対して、ベクター系では円の描き方に相当するようなパス情報を持ちます。パス情報は拡大縮小しても劣化しません。ピクセルを保持するラスター系ソフトも確かにデジタルであり、アナログな写本に比べて情報が劣化することはありませんが、ベクター系のソフトは数学的なベクター情報を保持するため、「さらに高水準のデジタル情報」だと言えます。
2023.03.07編集
コンピュータで文字を表現するためには、文字を決められた数字情報に変換し、読む時にその変換方法を使って数字情報を文字情報に直します。
この「決められた数値と文字の変換方法」を、文字コードと呼びます。
英語では、文字コードはASCIIと呼ばれる標準がありますが、日本語にはそのような標準がなく、Shift-JIS、EUC-JP、UTF-8などが、それぞれの機種やプラットフォームでバラバラになっています。
もし、既にその決まりで変換されている文字コードを別の文字コードで理解しようとすると、きちんと元の文字に戻すことができず、「文字化け」を起こすことがあります。
昔から、日本語のWindowsではShift-JIS、UNIXではEUC-JPが使われており、最近になって日本語だけではなく世界中の多くの言語を包括するUnicodeという文字コードが生まれ、Unicodeの中でもUTF-8という文字コードが最近では標準的に使われるようになりました。
文字コードを正しく使うためには、書いた文字コード(日本語の文字をキーボードとかな漢字変換システムを使って書いて、ファイルに保存する際に、数値情報に直す時の文字コード)と読む文字コード(ファイルを読み込んで、記述された数値情報を日本語の文字として理解して表示する際に、文字情報に直す時の文字コード)が一致している必要があります。
2024.09.28
以下の書籍が参考になります。
コンピュータの計算原理も参照のこと。