文字、固定・浮動小数点

# 文字の表現、固定・浮動少数点

#### 1. 情報の単位

○情報とは？

人類に関係のある変化（和田が学生時代ならった阪大尾崎先生の定義）

○情報量とはなにか？

情報の例をあげよ

○ビット（bit）とは一体なにか？

確率５０％事象＝１ビットの情報

○2進数の各桁のことをBIT（ビット）と呼ぶ
1ビットの数といえば．．．’０’もしくは’１’
2ビットの数といえば．．．”００”、”０１”、”１０”もしくは”１１”

○特に8ビットのことをBYTE（バイト）と呼ぶ
”０１００１１００”は8ビットすなわち、1バイトの数

○WORD（ワード）というのも使うが、マシンによって16ビット、32ビット、６４ビット等をさす（決まったサイズではなく、そのマシンの標準の言葉のサイズ）

○補助単位

T (テラ) G (メガ) M (メガ) K （キロ） ｍ （ミリ） μ （μ） ｎ （ナノ） ｐ （ピコ） ｆ （フェムト）
1012 109 106 103 10-3 10-6 10-9 10-12 10-15

○　103 = 210 = 1024

○　256 M byte（メガバイト）

○　50
G byte （ギガバイト）

○

#### ２．文字コード

○ちょっとややこしい話　数字の２と文字の２

○コンピュータの中では同じ”２”でもそれが、「数字」か「文字」かで取り扱いがことなる。

○8ビットを用いて、数字の”２”を表現すると

０ ０ ０ ０ ０ ０ １ ０

この8ビットは数字を表すので、

●符号無し数ならば、０から２５５(10)

●符号付数ならば、－１２８(10)から１２７(10)までの整数を示すことができる。

○8ビットを用いて、文字の”２”を表現すると

8ビットなので２５６種類の異なる文字を表現できる。

●EBCDICコードでは

１ １ １ １ ０ ０ １ ０

●ASCIIコードでは　7ビットであり全部で128種の文字に対応する。そのうち、３３種はプリントできない文字である。

０ １ １ ０ ０ １ ０

〇クイズ

コンピュータにアルファベット"a"1文字を入力した。そのコンピュータはその文字をEBCDICで内部に記憶した。その8ビットのコードをプリンターに送るとプリンターは"a"を印刷する。

大文字もしくは小文字のアルファベット26文字の入力に対して、かならず大文字をプリントするようにするにはコンピュータ内でどのような処理をすればよいか？

#### ３．２の補数の補足

○符号無し数の場合、各桁の重みは

27=
128 26=
64 25=
32 24=
16 23=
8 22=
4 21=
2 20=
1

したがって、０１００　１１００(2) = 64+8+4=７６(10)

○２の補数を用いた符号付数の場合の、各桁の重みは

-27=
-128 26=
64 25=
32 24=
16 23=
8 22=
4 21=
2 20=
1

MSBの重みが負になっている。

したがって、

（１）１１００　００１１(2)　＝ -128+64+2+1＝－６１(10)

のように直接１０進数に変換できる。

（２）１１００　００１１(2)　の2の補数をとると、００１１　１１０１(2)

００１１　１１０１(2)　＝　32+16+8+4+1＝６１(10)、したがって

１１００　００１１(2) ＝－６１(10)　のようにして間接的に１０進数に変換も可能。

#### ４．固定小数点表現

○実はこれまで説明した数字を表し方が固定小数点表現

〇教科書では固定小数点表現では必ず、MSBが符号ビットであり、符号付数となっているが、

〇別に符号無し数でも構わないので、これまで説明した符号無し数、符号有り数はすべて固定小数点表現と思ってよい。

〇符号付数（固定小数点表現）

符号 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1

という数があるとする。小数点が一番右端にあると思えば、

符号 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1 ．

となりｎ桁であれば、 -2n-1 ～　2n-1 -1まで（刻みが１）の数を表現することができる。

n=16ならば、－３２７６８～３２７６７

〇しかし実際にはコンピュータ上の数字には小数点は記録されないので、小数点がどこにあるかは自分の思い（約束で）どこにあると思ってもよい。

〇符号付数（固定小数点表現）

符号 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1

という数があるとする。小数点が符号ビットの右側にあると思えば、

符号 ． 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1

となり１６桁であれば、 -216-1/215 ～　(216-1
-1)/215 まで（刻みが1/215）の数を表現することができる。

n=16ならば、－1～32767/32768 => -1.0 ～　0.999969482 (刻みが3.05*10-5)の数字を表すことができる。

●固定小数点表現というのは、小数点の位置をコンピュータは管理せず、ユーザやプログラマに任せた表現方法。

#### ５．浮動小数点表現

○教科書に浮動小数点の表現方法が書かれているが、１９８０以降はIEEE７５４浮動小数点規格が用いられ、教科書の記述とはやや異なる。

●単精度

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
S 指数E　（8ビット） 仮数F　（２３ビット）

●倍精度

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
S 指数E 仮数F　（５２ビット）

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
仮数F

（１）仮数

２３ビット（５２ビット）がすべて０ならば、０を示す。

そうでなければ、
仮数フィールドは小数点が最上位ビットの左側にあり、23（52）ビットを用いて０から１の間の小数を示し、その小数点の左側にいつも１があるとする。

（２）指数

指数は単精度では　－１２７から１２８　すなわち　2-127から2128を表す。が

このー１２７を実際には00000000で１２８を11111111で示す。

倍精度では　-1023から1024をカバーし、-1023実際は00000000000で1024を11111111111で示す。

## （－１）S　X　（１＋仮数）　X　２（指数－ゲタ）

## ゲタ＝　－１２７（単精度）、－１０２３（倍精度）

宿題３　学籍番号　名前　日付　を書いて　提出すること。

１）数値 -.075(10)のIEEE754での２進表現を、単精度32ビットと倍精度６４ビットで示せ

単精度

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

倍精度

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

２）IEEE754規格の下記32ビットの語によって示される１０進数はいくらか？

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

３）P70-75の演習問題すべて