2進数とコンピュータのメモリについて


  0と1の世界

 そもそもデジタルとは、情報を整数の集合のように明確に区別できる段階的な物理量に対応させて記憶・伝送することである。
その中で、特にコンピュータは情報を一般に0と1で表される2進数の羅列として取り扱う。
この情報の最小単位、すなわち、0か1を1つだけ表せるものをビットと呼んでいる。
例えば、8ビットでは2の8乗の256、16ビットでは2の16乗の65536段階を表すことができる。
 コンピュータの世界では16進数がよく用いられる。16進数で使う文字(この場合、数字といってもよい)は
    0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
であり、FFは10進数では255を示す。
  なお、単に37と書いた場合、16進数かどうかわかりにくいので 0x37 や37H という表現が用いられる。
また、この場合、37を発音するときに、”さんじゅうなな”ではなく”さんなな”と発音することになる。
   37Hは10進数では55となる(3×16+7=55)。
  16進数は、主に2ケタ毎、すなわち、8ビット毎に表される(または考える)ことが多い。
その場合、FHとは書かずに0FHと表現する。
  この8ビットを1バイトという。よって1バイトは256段階を示すことができる。バイトはメモリサイズなどの表示時にBと略記される。
 
 さて、ここで16進数と2進数の変換を考えてみよう。これは4ビット毎に考えるとよい。
 また、4ビットに足りない情報の場合でも先頭に0をつける。
  ( 0101 1010 )2  は 5AH であり、
  B6H は ( 1011 0110 )2  である。
   


  コンピュータのメモリ

   2012年時点でパソコンのメインメモリは4GB=(4294967296バイト)程度である。なお、1985年(NEC PC-9801VM2)では384KB=(393216)程度であった。
この30年弱で10000倍以上となったわけである。ちなみに現時点での地球シミュレータの総メモリは20TBであり、標準パソコン1台の5120倍である。
言い換えれば、現在の最高性能コンピュータのメモリがパソコンの5000倍しかないともいえる。
  これは、高度な計算をしようと考える場合、メモリはいまでも効率的に使う必要があることも示している。
  本講義に直結する話としては、プログラミング言語で扱う整数と実数における1変数あたりのメモリ量がある。
  最近のコンピュータ・プログラミング言語において主流の値は以下のようになる。
   整数 : 4バイト(32ビット)
   実数 : 倍精度実数型 (double) の場合 8バイト(64ビット)
である。ちなみに30年前でも高精度数値計算においては倍精度実数型を使っていたので実数のサイズは変わっていない。
 ロボットの制御などに用いられるマイコンでは、いまでも搭載メモリ量が少ない(例えば8KB)ので
高精度の実数計算をしないとか整数でも2バイト整数を用いることが行われる。
  別頁で述べているように多くのプログラミング言語ではメモリ効率化と用途の明確化のために
整数変数と実数変数を取り扱えるようにしているのである。


 

 

 戻る