08 情報科学概論 (3) : 2 進数表現 2008 年 4 月 24 日4限(41教室)
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 PresentationTRANSCRIPT
今日の目標
ノイマン式・コンピュータにおける情報の表現に 2 進数を採用したわけ.
2 進数⇔ 16 進数、また 10 進数との変換
2 進数の補数、補数を用いた引き算
数の表現• 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
数の表現• 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
数の表現• 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
数の表現 (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
基数の変換 (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
2 進数と他の表示との変換• 十進法から二進法へ ( 整数の場合)
数 q を 2 で割った剰余が 2 進数で最下桁その商を 2 であった剰余が 2 進数で次の桁etc.
0123 c)c)cc2(2(2q
0123
0123
cccc
c)c)cc2(2(2q
十進法から二進法へ ( 小数の場合)
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
十進法から二進法へ ( 小数)続
• さらに 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
二進法から十進法へ
......2c2b2a
2C2B2A...abc.ABC321
0122
二進法から十六進法へ• 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
2 進法を使う理由
• 装置が簡単で間違いにくく、符号効率最大
例えば「 2 進数で 1 億円あげる」と言われたとしよう。 100000000 円を十
進数に直すと , 要するに 2 の 8 乗で、十進数では
256 円!
マークシートを思い出せば• 2 進法の数字をコンピュータに読み取らせ
るには 0 と 1 を横にタイプしたものを必要な行数だけ利用する。 1 億ならまず最初の桁は 1 の方にマークし、残りの 8 桁を全て 0 にする。これを読み取るには一桁当たり二つの数のどちらであるかを確認すればよいので 2× 桁数の作業量( 1 億なら 18 回)
300を表せば
01234567890012345678900123456789
10 進マークシート
↑
10 列を 3 行スキャン =30 回の手間
2 列を 9 行スキャン = 18 回の手間 →
2 進マークシート 0
100100101001 0101001001
N 進数なら N×( 桁数)
• 10 進法では, 256 となり, 3 桁必要• 10 進法のマークシートは横に 0 から 9
までの 9 つの数字がタイプしてあり、 256 ならこれを 3 行使う。つまり10× 桁数( 256 なら 30 回)
• 先の 2 進法より明らかに手間がかかる。• 一桁目が 2 であることがわかればすぐ次
の桁に行けるか。 2 である事を確認するには 2 以外にマークがあってはいけない。
2 進数がもっとも効率が高い• 2 進数で x 桁になるとき N 進数では何桁?• 例えば 10 進法表示で A=256 と書ける数を
2 で 8 回割ると 1 になり 2 で割れない。 よってこの数の 2 進数表示は 9 桁 =log2( A)+1 である。
• A=256 の十進法表示は要するにこの数を十で割り(剰余を 1 の位の数とする)その答えを十で割る(剰余を十の位の数とする)。よってこの数の十進表示は
int ( log10(A))+1
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
2 進法の足し算• X=1101, Y=111 の和: 111
1101(+
10100
ここでやっているのは 最下位桁: 1+1=0 ( 1 繰り上がり) 2の桁: 1+1+0=0 ( 1 繰り上がり) 4の桁: 1+1+1=1 ( 1 繰り上がり) 等
2 進法の引き算• 0 と 1 を反転したもの( 2 の補数)に 1 を加え
たもの( 1 の補数)をつくり、これを加算する。
• 例: 7-5
-5 は 101 を反転させて 010 としたあと、 1 を加えて 011 を作る。これが 5 に対する“ 1 の補数”である。 111 にこれを加えると 010 となる。
( 実は桁あふれを利用)
負の数の補数表示と桁あふれ• 8 桁の二進数( 8bit 、また 1byte とも言う)に
正と負の数を入れようとすると、正の部分は 0から 127 まで、負の部分は -1 から -128 までしか入らない。そこで正の数は 0 から始まる00000000 から 01111111 までとし、負の数は 1から始まるとすると引き算するのに便利である。
• -1 は 11111111 、 -128 は 10000000 と書ける。• 最大数である 127 に 1 を足すと最小数である -
128 に、最小数 -128 から 1 を引くと、最大数である 127 となり、また、 -1 に 1 を足すと 0 になる。
小数の二進法表示• 0.000253 などは固定小数点表示( fixed p
oint)
これをのように表すのが浮動小数点表示( floating
point)
0.253 は仮数、これに基数を指数回かけたもので表す
310253.0
浮動小数点表示
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