ASCII CPU Memory プロセッサ 文字コード

メモリアドレス上でのデータの表し方(2/2)

2017年11月28日


プロセッサとメモリの関係

多くのプロセッサはデータを1Biteずつカットして、
メモリアドレスを割り振っていく(=バイトアドレッシング)。
メモリに割り当てたアドレスには4Biteずつデータを入れていく。

~なぜ4Biteか?~

多くのプロセッサは一度に処理できるデータ量が決まっており、
32bitプロセッサなら一度に32bit(=4Bite)までしか扱えない。

~なぜデータ量が決まっているか?~

多くのプロセッサは、プロセッサ内のレジスタを元に、数値演算を行っており、
一つのレジスタが一度に扱えるデータ量が32bitなら、32bitプロセッサになる。

~レジスタとは?~

データとかメモリアドレスを一時的に保存しておく場所で、CPUとかI/Oにある。
レジスタからメモリにデータが書き込まれる。
プロセッサの動作とは、レジスタとメモリとの間でデータを送受することだといえる。

以下イメージ図

8ビットプロセッサでの例。プロセッサからの命令でメモリアドレス00000011にデータ00011010を格納している。
I/Oからのデータは一旦プロセッサのレジスタに保存してから、メモリに書き込む感じ。

データをメモリにどう格納するか

Bite単位でメモリアドレスへ割り当てる方法をバイトオーダ(=エンディアン)という。
エンディアンには2種類ある。

・リトルエンディアン

(=最下位bitから、メモリの低位アドレスに入れていく。※下から入れる。)

ex) Intel x86プロセッサはこれらしい

・ビッグエンディアン

(=最上位bitから、メモリの低位アドレスに入れていく。※頭から入れる。)

ex) 一部Macはこれらしい

文字列をメモリアドレスへ格納する場合

文字列は数値に変換されて格納される。

例としてASCIIコード表のAを変数に定義すると、
Aに紐付いた0x41が変数に代入されて、メモリアドレスに格納される。
Code = ‘A’

Code = 0x41

※1Biteで1文字を表すことができる

8bitで0〜255の数値が表現できるので、主要なアルファベットと数字と記号を、
数値と対応させて表現できる。

日本語(ひらがな、カタカナ、漢字)は文字に対応する数値がコード表にない場合、
既存の文字コードでとりあえず置き換えようとして、文字化けになることがある。

この場合Shift_JISとか別の文字コードが必要になる。

以下ASCIIコードでのイメージ

参考:矢沢久雄(2003)『コンピュータはなぜ動くのか』日経BP社

CATEGORIES & TAGS

ASCII, CPU, Memory, プロセッサ, 文字コード,

Author:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

カテゴリー

むるし

フリーランスのインフラ系エンジニア。
備忘録で色々書いていきます。
お問い合わせは↓
mo-gyu@murci.net
LPIC303 Security
%d人のブロガーが「いいね」をつけました。