08情報科学概論(3):2進数表現 2008年4月24日4限(41教室) 田中美栄子 4803室(木曜5限) [email protected] 知識工学A 今日の目標 2進数⇔16進数、また10進数との変換 2進数の補数、補数を用いた引き算 ノイマン式・コンピュータにおける情 報の表現に2進数を採用したわけ. 数の表現 • 10進数 3 1 7 6 1の位 10の位 100の位 1000の位 100 101 102 103 基数 (3176) 10=3×103+1× 102 +7×101+6×100 =3000+100+70+6 数の表現 • 2進数 1 1 0 1 1の位 2の位 4の位 8の位 20 21 22 23 基数 (1101)22 =1×23+1× 22 + 0×21+1×20 =(8+4+0+1)10=1310 数の表現 • 16進数 3 1 7 6 1の位 10の位 100の位 1000の位 160 161 162 163 基数 (3176) 16=3×163+1× 162 +7×161+6×100 =12288+256+112+6=12662 数の表現(2進数,16進数) • 2進数 (1011) (1011) 2=1×23+0×22+1×21+1×20 =(11) 10 • 16進数 (BEEF) – 10~15はA~Fで表す (BEEF) =11×163+14×162+14×161+15×160 16 = 49152+3584+224+15 = (52975) 10 基数の変換(2進数→10進数) • 整数 – 例: (11011010)2 • (11011010)2 =1×27+1×26+1×24+1×23+1×21 =128+64+16+8+2 =(218)10 小数 – 例: (0.1011)2 (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 c3 c 2 ) c1 ) c0 c3c 2c1c0 数qを2で割った剰余が2進数で最下桁 その商を2であった剰余が2進数で次の桁 etc. 十進法から二進法へ(小数の場合) 1 2 3 0.110 a 2 b 2 c 2 c 2 0.abcd2 2倍すると、一桁ずれて a.bcd となるが、0.2だから1より小さいのでa=0 2倍すると ab.cd となるが0.4だから1より小さいのでb=0 2倍すると abc.d となるが0.8だから1より小さいのでc=0 4 十進法から二進法へ(小数)続 • さらに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 二進法から十進法へ ABC. abc...2 A 2 B 2 C 2 2 1 2 1 3 a 2 b 2 c 2 ...... 0 二進法から十六進法へ • • • • • • • • 0000=0 0001=1 0010=2 0011=3 0100=4 0101=5 0110=6 0111=7 1000=8 1001=9 1010=A 1011=B 1100=C 1101=D 1110=E 1111=F 左二進法、 右十六進法 2進法を使う理由 • 装置が簡単で間違いにくく、符号効率最大 例えば 「2進数で1億円あげる」 と言われたとしよう。100000000円を十進数 に直すと,要するに2の8乗で、十進数では 256円! マークシートを思い出せば • 2進法の数字をコンピュータに読み取らせる には0と1を横にタイプしたものを必要な行数 だけ利用する。1億ならまず最初の桁は1の 方にマークし、残りの8桁を全て0にする。これ を読み取るには一桁当たり二つの数のどちら であるかを確認すればよいので2×桁数の作 業量(1億なら18回) 300を表せば 10進マークシート 0123456789 0123456789 0123456789 ↑ 10列を3行スキャン=30回の手間 2列を9行スキャン= 18回の手間 → 2進マークシート 01 01 01 01 01 01 01 01 01 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(logx A 1) であり,最小値がx=3 で実現することを示す。そのために手間をxで微分す ると d d ln A 1/ x を用いて dx logx A dx ln x ln A (ln x) 2 ln A ln A 1 ln x (ln x) 2 となってAが大きな数のときx=eで最小となる 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 point) これを 0.253103 のように表すのが浮動小数点表示(floating point) 0.253は仮数、これに基数を指数回かけたもの で表す 浮動小数点表示 符号 指数 仮数部の小数点以下の部分 6.625=110.101(二進法)=0.110101×23 もう少しコンパクトに 6.625=110.101(二進法)=0.0110101×24 =0.0110101×161 0(正) 1000 0001 01101010 00000000 00000000 符号 指数部+1000 0000 仮数部の小数点以下の部分 (7桁で-64から63までを表せる)
© Copyright 2024 ExpyDoc