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


1. 情報の単位

○情報とは?

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

○情報量とはなにか?

情報の例をあげよ

○ビット(bit)とは一体なにか?

確率50%事象=1ビットの情報

○2進数の各桁のことをBIT(ビット)と呼ぶ
1ビットの数といえば...’0’もしくは’1’
2ビットの数といえば...”00”、”01”、”10”もしくは”11”

○特に8ビットのことをBYTE(バイト)と呼ぶ
”01001100”は8ビットすなわち、1バイトの数

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

○補助単位
T (テラ) G (メガ) M (メガ) K (キロ) m (ミリ) μ (μ) n (ナノ) p (ピコ) f (フェムト)
1012 109 106 103 10-3 10-6 10-9 10-12 10-15

○ 103 = 210 = 1024

○ 256 M byte(メガバイト)

○ 50 G byte (ギガバイト)

2.文字コード

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

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

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

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

●符号無し数ならば、0から255(10)

●符号付数ならば、−128(10)から127(10)までの整数を示すことができる。

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

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

●EBCDICコードでは

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

〇クイズ

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

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

 

3.2の補数の補足

○符号無し数の場合、各桁の重みは
27=
128
26=
64
25=
32
24=
16
23=
8
22=
4
21=
2
20=
1

したがって、0100 1100(2) = 64+8+4=76(10)

○2の補数を用いた符号付数の場合の、各桁の重みは
-27=
-128
26=
64
25=
32
24=
16
23=
8
22=
4
21=
2
20=
1

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

したがって、

(1)1100 0011(2) = -128+64+2+1=−61(10)

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

(2)1100 0011(2) の2の補数をとると、0011 1101(2)

0011 1101(2) = 32+16+8+4+1=61(10)、したがって

1100 0011(2) =−61(10) のようにして間接的に10進数に変換も可能。

4.固定小数点表現

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

〇教科書では固定小数点表現では必ず、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

となりn桁であれば、 -2n-1 〜 2n-1 -1まで(刻みが1)の数を表現することができる。

n=16ならば、−32768〜32767

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

 

〇符号付数(固定小数点表現)

符号 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

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

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

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

 

5.浮動小数点表現

○教科書に浮動小数点の表現方法が書かれているが、1980以降はIEEE754浮動小数点規格が用いられ、教科書の記述とはやや異なる。

●単精度

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 (23ビット)

●倍精度

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 (52ビット)
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

 

(1)仮数

23ビット(52ビット)がすべて0ならば、0を示す。

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

(2)指数

指数は単精度では −127から128 すなわち 2-127から2128を表す。が

このー127を実際には00000000で128を11111111で示す。


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

 

(−1)S X (1+仮数) X 2(指数−ゲタ)

ゲタ= −127(単精度)、−1023(倍精度)


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

 

1)数値 -.075(10)のIEEE754での2進表現を、単精度32ビットと倍精度64ビットで示せ

単精度

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
                                                               

 

2)IEEE754規格の下記32ビットの語によって示される10進数はいくらか?

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

 

3)P70-75の演習問題すべて

以上