08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

23
08 情情情情情情 (3) 2 情情情情 2008 情 4 情 24 情 情情 情 情 情情情 4(41) 情情情情情 4803 情 情情 5情[email protected] 情情情情 A

Upload: ora-kerr

Post on 30-Dec-2015

30 views

Category:

Documents


1 download

DESCRIPTION

08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室). 田中美栄子  4803 室(木曜 5 限) [email protected] 知識工学 A. 今日の目標. 2 進数⇔ 16 進数、また 10 進数との変換 2 進数の補数、補数を用いた引き算. ノイマン式・コンピュータにおける情報の表現に 2 進数 を採用したわけ .. (3176)  = 3×10 3 + 1× 10 2 + 7×10 1 + 6×10 0      = 3000 + 100 + 70 + 6. 10. 数の表現. 10 進数. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

08 情報科学概論 (3) : 2 進数表現

2008 年 4 月 24 日4限(41教室)

田中美栄子  4803 室(木曜 5限)

[email protected]知識工学 A

Page 2: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

今日の目標

ノイマン式・コンピュータにおける情報の表現に 2 進数を採用したわけ.

2 進数⇔ 16 進数、また 10 進数との変換

2 進数の補数、補数を用いた引き算

Page 3: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

数の表現• 10 進数

3   1   7   61 の位10 の位100 の位1000 の位

100

101

102

103

基数

(3176)  = 3×103 + 1× 102 + 7×101 + 6×100

     = 3000 + 100 + 70 + 610

Page 4: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

数の表現• 2 進数

1   1   0   11 の位2 の位4 の位8 の位

20

21

22

23

基数

(1101)2  = 1×23 + 1× 22 + 0×21 + 1×20

     =( 8 + 4 + 0 + 1 ) 10=13102

Page 5: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

数の表現• 16 進数

3   1   7   61 の位10 の位100 の位1000 の位

160

161

162

163

基数

(3176)  = 3×163 + 1× 162 + 7×161 + 6×100

     = 12288 + 256 + 112 + 6=1266216

Page 6: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

数の表現 (2 進数, 16 進数 )

• 2 進数 (1011)

• 16 進数 (BEEF)– 10 ~ 15 は A ~ F で表す

(1011)  = 1×23 + 0×22 + 1×21 + 1×20

     = (11)2

10

(BEEF)  = 11×163 + 14×162 + 14×161 + 15×160

      = 49152+3584+224+15        =  (52975) 10

16

Page 7: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

基数の変換 (2 進数→ 10 進数 )

• 整数– 例 : (11011010)2

• 小数– 例 : (0.1011)2

(11011010)2 = 1×27 + 1×26 + 1×24 + 1×23 + 1×21

        = 128 + 64 + 16 + 8 + 2        = (218)10

(0.1011)2 = 1×2(‐1) + 1×2(-3) + 1×2(-4)

      = 1/2 + 1/8 + 1/16      = (0.685)10

Page 8: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

2 進数と他の表示との変換• 十進法から二進法へ ( 整数の場合)

数 q を 2 で割った剰余が 2 進数で最下桁その商を 2 であった剰余が 2 進数で次の桁etc.

0123 c)c)cc2(2(2q

0123

0123

cccc

c)c)cc2(2(2q

Page 9: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

十進法から二進法へ ( 小数の場合)

2

432110

abcd.0

2c2c2b2a1.0

2 倍すると、一桁ずれて

a.bcd  となるが、 0.2 だから 1 より小さいので a=0

2 倍すると

ab.cd  となるが 0.4 だから 1 より小さいので b=0

2 倍すると

abc.d  となるが 0.8 だから 1 より小さいので c=0

Page 10: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

十進法から二進法へ ( 小数)続

• さらに 2 倍すると 10 進法で 1.6 、つまり 1 より大きいがこれの 2 進表示は

abcd  となり、d=1 である。

0.1             桁上がり

×2   =0.2               0

×2   =0.4               0

×2   =0.8               0

×2   =1.6 (1 を引く  0.6)      1

×2   =1.2   (1 を引く  0.2)     1

×2   =0.4               0

×2   =0.8               0

×2   =1.6   (1 を引く  0.6)     1

Page 11: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

二進法から十進法へ

......2c2b2a

2C2B2A...abc.ABC321

0122

Page 12: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

二進法から十六進法へ• 0000=0         1000=8    左二進法、• 0001=1         1001=9      右十

六進法• 0010=2         1010=A • 0011=3         1011=B• 0100=4         1100=C• 0101=5         1101=D• 0110=6         1110=E • 0111=7         1111=F

Page 13: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

2 進法を使う理由

• 装置が簡単で間違いにくく、符号効率最大

例えば「 2 進数で 1 億円あげる」と言われたとしよう。 100000000 円を十

進数に直すと , 要するに 2 の 8 乗で、十進数では

           256 円!

Page 14: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

マークシートを思い出せば• 2 進法の数字をコンピュータに読み取らせ

るには 0 と 1 を横にタイプしたものを必要な行数だけ利用する。 1 億ならまず最初の桁は 1 の方にマークし、残りの 8 桁を全て 0 にする。これを読み取るには一桁当たり二つの数のどちらであるかを確認すればよいので 2× 桁数の作業量( 1 億なら 18 回)

Page 15: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

300を表せば

01234567890012345678900123456789

10 進マークシート

 

    ↑

10 列を 3 行スキャン =30 回の手間

        2 列を 9 行スキャン = 18 回の手間 →

2 進マークシート 0

100100101001 0101001001

Page 16: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

N 進数なら N×( 桁数)

• 10 進法では, 256 となり, 3 桁必要• 10 進法のマークシートは横に 0 から 9

までの 9 つの数字がタイプしてあり、 256 ならこれを 3 行使う。つまり10× 桁数( 256 なら 30 回)

• 先の 2 進法より明らかに手間がかかる。• 一桁目が 2 であることがわかればすぐ次

の桁に行けるか。 2 である事を確認するには 2 以外にマークがあってはいけない。

Page 17: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

2 進数がもっとも効率が高い• 2 進数で x 桁になるとき N 進数では何桁?• 例えば 10 進法表示で A=256 と書ける数を

2 で 8 回割ると 1 になり 2 で割れない。 よってこの数の 2 進数表示は 9 桁 =log2( A)+1 である。

• A=256 の十進法表示は要するにこの数を十で割り(剰余を 1 の位の数とする)その答えを十で割る(剰余を十の位の数とする)。よってこの数の十進表示は

  int ( log10(A))+1

Page 18: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

x 進数の場合• 手間は           であり,最小値

が x=3で実現することを示す。そのために手間を x で微

分すると

を用いて

となって A が大きな数のとき x=e で最小となる

2)(ln

/1ln

ln

lnlog

x

xA

x

A

dx

dA

dx

dx

)1A(logx x

2)(ln

ln

ln

ln1

x

A

x

A

Page 19: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

2 進法の足し算• X=1101,   Y=111 の和:      111

                      1101(+

10100

ここでやっているのは  最下位桁: 1+1=0  ( 1 繰り上がり)  2の桁:  1+1+0=0  ( 1 繰り上がり)  4の桁:  1+1+1=1  ( 1 繰り上がり) 等

Page 20: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

2 進法の引き算• 0 と 1 を反転したもの( 2 の補数)に 1 を加え

たもの( 1 の補数)をつくり、これを加算する。

• 例: 7-5

-5 は 101 を反転させて 010 としたあと、 1 を加えて 011 を作る。これが 5 に対する“ 1 の補数”である。 111 にこれを加えると 010 となる。

( 実は桁あふれを利用)

Page 21: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

負の数の補数表示と桁あふれ• 8 桁の二進数( 8bit 、また 1byte とも言う)に

正と負の数を入れようとすると、正の部分は 0から 127 まで、負の部分は -1 から -128 までしか入らない。そこで正の数は 0 から始まる00000000 から 01111111 までとし、負の数は 1から始まるとすると引き算するのに便利である。

• -1 は 11111111 、 -128 は 10000000 と書ける。• 最大数である 127 に 1 を足すと最小数である -

128 に、最小数 -128 から 1 を引くと、最大数である 127 となり、また、 -1 に 1 を足すと 0 になる。

Page 22: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

小数の二進法表示• 0.000253 などは固定小数点表示( fixed p

oint)

これをのように表すのが浮動小数点表示( floating

point)

0.253 は仮数、これに基数を指数回かけたもので表す

310253.0

Page 23: 08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)

浮動小数点表示

6.625=110.101( 二進法) =0.110101×23

もう少しコンパクトに6.625=110.101( 二進法) =0.0110101×24

                =0.0110101×161

符号 指数部 +1000 0000 仮数部の小数点以下の部分 (7 桁で -64 から 63 までを表せる)

符号 指数 仮数部の小数点以下の部分

0( 正 )

1000  0001

01101010 00000000 00000000