コンピュータの基本

メモリを理解するために ~アドレス・ビット・バイト~

コンピュータを利用することで、

 

  • キーボードを使って文字を入力する
  • ディスプレイに画像を表示する

といった処理がなぜ行えるのか。

それは、CPUがメモリの中に格納されている命令を、理解して実行しているからです。

 

コンピュータの原理は、

“メモリに格納されていたプログラムから、指定された命令を取り出し、その命令通りに実行する

ことにあるのです。 

ただこれだけの説明では、コンピュータに馴染みがない人にとっては、仕組みをイメージしずらいと思います。

 

メモリに格納されているプログラム? CPUってどんな役割なんだろう?

疑問は次から次へと湧いてきます。

そこで今回はメモリを理解するために、コンピュータの基本である、「アドレス・バイト・ビット」について書いてみたいと思います。

 

メモリを理解するために

アドレス

アドレスとは、メモリ空間の中にある一つ一つの「番地(アドレス)」のことを指します。

CPUは番地に格納されている、命令やデータを読み書きして演算することで、様々な処理を実行しています。

下の図をみてください。

 

 

この図の左側はメモリ空間を表しており、「F3」や「FF」などの記号は、アドレスの中に入っている命令を示しています。

CPUは、アドレスに入っている命令を一つずつ読みだし、処理を実行します。

その結果、キーボードに文字を入力したり、ディスプレイに画像を表示することが出来るのです。

プログラムは、メモリの中に格納された命令の集まりと言えます。

命令を変える事で、異なった処理を実行出来るようになります。

メモリ空間の中に「0000H」、「0001H」という数字がついていますよね。

これは、アドレスを表しています。メモリの1バイトごとに付けられており、必ず0000H番地から始まります。

1番地からではないので気をつけてください。

ちなみにHはHexadecimal (ヘキサデシマル) = 16進数の略になります。

DはDecimal (デシマル) = 10進数、BはBinary (バイナリ) = 2進数の略となります。

一般的にメモリのアドレスは16進数で表すので、覚えておいてくださいね。

アドレスは、”メモリにとっての住所”です。

現実の世界では、住所が必要です。メモリにとっても、命令がどの場所にあるかの目印が必要なんです。

 

数値の表し方

バイト

バイトはデータを表す基本単位であり、1バイトは8ビットで構成されています。

例えば、「00000001」では、”0 or 1″という2つの数値が、8つ並んでいるのが分かります。

この1つ1つの数値がビットであり、ビットが8つで1バイト。

私たちが普段、”12個を1ダース”という単位で表すのとまったく同じだと考えてください。

1バイト = 8ビット

バイトはコンピュータにとって、基本的な単位の一つなのです。

 

ビット

ビットは「0」か「1」の世界で成り立っています。

この世界は「デジタル」と呼ばれ、このデジタルデータの一桁分の単位をビット(bit)と呼びます。

 

ビットはコンピュータを構成する最小の単位であり、これ以上細かくすることが出来ません。

下の図を見てください。

 

この図は先ほど紹介した、メモリ空間の「0001H」番地を表しています。

1バイト=8ビットとご紹介しましたが、この図を見るとその意味がよくわかります。

 

一つの番地は8ビットで構成されており、それぞれのビットには「0」か「1」の数字が割り当てられています。

「F3」というのは0と1の組み合わせによって表現された数字であるのがわかりますね。

このように、コンピュータの内部でメモリやCPUは、0か1のビットの組み合わせによって動作しています。

 

つまり、「0」と「1」の羅列を変える事よって、コンピュータの動きを変えることが出来るのです。

 

動画を見たり、キーボードを入力したり、アプリを使ったり。

これらは、すべて0と1の組み合わせ。1であるべき所が0になっているだけで、全く異なる動きをする。

これがコンピュータの世界なのですね。

 

コンピュータの世界と私たちの世界

コンピュータの世界、つまり「0と1の2進数の世界」のイメージが湧かない方のために、例を挙げておきたいと思います。

私たちは意思疎通を図るために、「日本語」や「英語」という言語を使います。

日本語を話せる者同士だと、会話がなりたちますが、英語しか話せない人とは会話することが出来ません。

コンピュータの世界もこれと同じことなのです。

コンピュータは、0と1の組み合わせしか理解できません。

人間の言葉が分からないのです。

ですので、コンピュータにお願いごとをするときは、

「コンピュータの理解できる言葉」を使う必要があるのです。

 

上位ビットと下位ビット

先ほどの図を見てもらうと「上位ビット」「下位ビット」の2種類があると分かります。

“上位ビット”は左から4つ目までの数字、”下位ビット”は右から4つ目までの数字を指しています。

MSB(Most significant bit)は最上位ビットを表し、二進数において最も大きな値を意味するビット値のことを言います。

一方、LSB(Least significant bit)は最下位ビットを表し、二進数において最も小さなを意味するビット値を指します。

私たちが普段、”12個を1ダース”という単位で表すのと同じだと考えてください。

MSB = 一番大きなビット値(一番左の数値)

LSB = 一番小さなビット値(一番右の数値)

 

最後に

コンピュータは「0と1」という、二種類の数字を理解して、様々な処理を実行します。

どれだけ複雑に見える処理も、すべては数字の組み合わせに過ぎないのです。

新たな技術として知られる、人口知能やディープラーニングであっても、根本的な原理は同じです。

コンピュータがどうやって動いているのか。まずは、その仕組みを理解することが大切なのです。