見出し画像

CS_コンピューターのデータ, ビット, バイトについて #338日目

コンピューターサイエンスについて少しずつ学び始めました。基礎中の基礎のような内容ですが、普段コードを書いているだけだとあまり意識せず、知らない内容も多かったのでメモしておきます。

コンピューターのデータとハードウェアの仕組み

コンピューターサイエンスの世界では、コンピューターの中で処理・保存される「特定の順序の数字や記号」をデータと呼びます。そして、全てのデータは0と1のみで構成される「2進数」で表現できます。2進数は最も基本的な数字の並びと言われています。

今これだけ複雑なことができるコンピューターですが、根本を紐解くと「0と1の組み合わせ」に集約されるとは驚きです。

これはコンピューターを構成する電子部品であるIC (Integrated Circuit: 集積回路)が、0または1の電気信号しか入出力できない、という特性を持っているためです。0または1の電気信号とは実際には電圧の違いです。直流電圧0Vで数値の0を表し、5Vで数値の1を表します(5V以下の電圧を使うコンピューターもあります)。

プログラミング言語(人間が理解できる言語)で記述されたソースコードを、コンピューターが理解できる形式であるオブジェクトコードに変換する作業をコンパイルと言いますが、これは上記のようなコンピューターの仕組みに合わせて実施されています。オブジェクトコード=2進数やそれに準ずる形式(バイナリ)のことです。

また、ICの種類は大きく「プロセサ (CPU: Central Procession Unit)」「メモリ」「I/O (Input/Output)」3種類に大別でき、PCのハードウェアはこれら3つの要素から構成されています。


2進数とビットとバイト

普段我々が使用している10進数と2進数を対応させてみると以下のようになります。

2進数     10進数
00000000        0
00000001      1
00000010         2
00000011    3
00000100      4
00000101    5

当然ですが、2進数の桁数が多いほど表現できる数字が多くなります。

この2進数の桁数のことビット(bit)と言います。

1ビット → 0       → 0, 1の2通りが表現可能
2ビット → 00    → 00, 01, 10, 11の4通りが表現可能
3ビット → 000  → 000, 001, 010, 011, 100, 101, 110, 111の8通りが表現可能

これは組み合わせの問題と同じで、nビットは2のn乗通りの0と1の組み合わせがあります。

1ビット → 2の1乗 = 2通り
2ビット → 2の2乗 = 4通り
3ビット → 2の3乗 = 8通り

3ビットで10進数との対照表を作成すると以下のようになります。

2進数   10進数
000            0
001             1
010             2
011              3
100             4
101           5
110              6
111               7

ビット数が多いほど、より多くの数字が表現できることが確認できます。

また、普段よく目にするバイト(byte)はこのビットの数で決まります。

1バイト = 8ビット
→ 1バイトは256通り(2の8乗)の0と1の表現が可能


何となく聞き流していた単語の意味がわかってくると面白いですね。


ちなみにコンピューターのデータ型でintやfloatなどの数字と、'1'などの文字列で扱いが異なるのも、この0と1でそれぞれ異なる表現がされているからです。

True / Flaseのブーリアン型はわかりやすくて、Trueが1でFalseが0です。


ここまでお読みいただきありがとうございました!!


参考


この記事が気に入ったらサポートをしてみませんか?