PCのCPUのBIT数は、8bit、16bit、32bit、64bitと8の倍数かつ、2のべき乗ですが、これはなぜですか。
こちらのサイトによれば、
ようやく本題:CPU の語長が2の冪乗だと,具体的に何が都合がいいのか?
私の (プログラマとしての) 経験から具体的なメリットを挙げてみる.
(実際にそういう語長が出現 ~普及した経緯についてはコンピュータ史を色々調べてみる必要がある.昔からそうしたいと思っているのだが….)
なぜ8ビットの倍数でなければならないか?
標準的な文字コードとして ASCII (7ビット) が普及した. その後制定された各国のさまざまな文字コードも最低7ビットが必要で, 普通は8ビットを単位としている. したがって1バイト=8ビット単位でデータを処理するマシン (バイトマシン ) でないと,文字情報を効率良く扱えない.
なぜ語長が2の冪乗でなければならないか?
プログラムを書いていると,あるサイズ (ビット数またはバイト数) のデータを記憶するのにメモリが何語 (または何バイト) 必要か, といった計算をしなければならないことがしょっちゅうある (プログラマが意識していなくて,コンパイラがやっている場合も多い). これを次のようなたとえ話で考えてみよう.
「N個の同種の品物 (ビット) がある.1つの箱 (語またはバイト) にはM個の品物が入れられる.いくつの箱が必要か?」
例えばN=789個の品物があったとして,1箱にM=12個入るとすれば, N÷M=65あまり9なので66箱必要ということになる. しかし割り算を筆算でするのは手間がかかる. (コンピュータは自分で計算しなければならないので, このたとえ話で「電卓を使う」というのはナシ.)
人間は10進数で計算するので,Mが10の冪乗 (10,100,1000,…) だったらわざわざ筆算しなくても, 小数点の位置をずらすだけで簡単に答えが出る.
コンピュータは10進数ではなく2進数を使うので, 語という「箱」やバイトという「小箱」の大きさが2の冪乗ならば, わざわざ時間のかかる割り算をしなくても,(小数点の代わりに) ビットの位置をずらす (シフト) だけですぐに答えが出るので,処理が高速に行える. プログラムの中ではこういう計算を頻繁に行うので, 語やバイトが2の冪乗でないと,処理が非常に遅くなる場合がある.
(最近のパソコンに使われている CPU は,乗除算を高速に行う回路を持っている. しかし家電製品などに組み込まれている CPU は,低価格化, 低消費電力化などのためにそういう回路は付いていないことが多いので, 乗除算には時間がかかる.)
とありました。
7bitで文字を表現するASCIIが普及して、プログラミングを行う上でよく行う計算は、ビットをずらしたほうが速いから、CPUのbit数は、8の倍数で2のべき乗ということなのでしょうか。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。