狠狠撸
Submit Search
计算机理论入门03
?
Download as PPT, PDF
?
0 likes
?
1,850 views
Tomoyuki Tarumi
Follow
1 of 29
Download now
Download to read offline
More Related Content
计算机理论入门03
1.
計算機理論入門 3
2012 年度後期 垂水共之 tarumi@ems.okayama-u.ac.jp 20121003 20121017 講義終了後、誤植を修正
2.
2 進数、 8
進数、 10 進数、 16 進数 ? 10 進数 – 0から9まで 10 種類の「文字」を使い 10のベキ乗で位取り 例1) 1 2 3 = 1 × 102 + 2 × 101 + 3 × 100 ↑ ↑ ↑ 10 2 10 1 10 0 の の の (例2) 1 0 1 = 1 × 2 + 0 × 2 + 1 × 2 2 1 位 位 位 ↑ ↑ ↑ = 4 + 0 + 1 22 21 20 の の の 位 位 位 ? 2進数 – 0と1の 2 種類の「文字」を使い 2のベキ乗で位取り – 電気の Off 、 On に対応して0,1 – ビット (bit) 0,1の 2 つの状態しか取れない情 報の単位
3.
進数表記 ? 101
– 10 進数? – 2 進数? ? 101 (10) ? 101 (2) ? ああ
4.
10進2進変換(その1 整数の場合) ?
2 進数 to 10進数 – (位取り)2進数の各桁に2の対応するベキ乗をかけて加える bn bn-1…b2 b1 b0 = bn × 2n+bn-1 × 2n-1+…+b2 × 22+b1 × 21+b0 × 20 ここにbn,bn-1,…,b2,b1,b0は0か1. ? 10 進数 to 2進数 – 10進数の値を2で割ってその余りを,商が0になるまで求め て行く – 上の式の両辺を2で割れば、 1 桁右にずれて bn bn-1…b2 b1 b0 ÷ 2 = bn bn-1…b2 b1 余り b0 bn × 2n +bn-1 × 2n-1+…+b2 × 22+b1 × 21+b0 × 20 ÷ 2 = bn × 2n-1+bn-1 × 2n-2+…+b2 × 21+b1 × 20 余り b0
5.
a0を与えられた10進数としたとき, a1 = a0
÷ 2 + b0 a2 = a1 ÷ 2 + b1 : an = an-1 ÷ 2 + bn-1 an+1 = an ÷ 2 + bn ここに bi(i=0,1,…,n)は0か1,an+1=0 とする。 このとき, a0(10)=bn bn-1 …b2 b1 b0(2) となる。
6.
例 3
10 進数の123を 2 進数へ変換 2)123 2)61 ...1(=b0) 2)30 ...1(=b1) 2)15 ...0(=b2) 2)7 ...1(=b3) 2)3 ...1(=b4) 2)1 ...1(=b5) 0 ...1(=b6) よって 123(10) = 1111011(2)
7.
10進2進変換(その2 純小数 (整数部の無い)
の場合) ? 2進数から10進数に変換するには,下のように2進数 の各桁に2の対応するベキ乗をかけて加えればよい。一 般には次式で表される。 0.b-1b-2b-3……………(2) = b-1 × 2-1+b-2 × 2-2+b-3 × 2-3……………(10) ここにb -1 ,b -2 ,…,b -(n-1) ,b -n は0か1 ? この式の両辺を2倍すると小数点の位置が一桁右にずれ b-1.b-2b-3……………(2) = b-1+b-2 × 2-1+b-3 × 2-2……………(10) ? となり、整数部にb-1が浮かび上がってくる。整数部の b-1を横に置いて、 0.b-2b-3……………(2) = b-2 × 2-1+b-3 × 2-2……………(10)
8.
(例4) 0.1 (10) を2進数に変換する。
0.1 × 2 |----------------------- 0.2 | × 2 ||---------------------- 0.4 || × 2 |||--------------------- 0.8 ||| × 2 ||||-------------------- 1.6 |||| × 2 |||||------------------- 1.2 ||||| × 2 ||||||------------------ 0.4 ↓↓↓↓↓↓ 0.000110…………… ? 以下同様に行えば、 0011 が繰り返す循環小数とな る 0.1(10) = 0.00011(2)
9.
一般の小数の場合 ? 整数部と小数部とに分け、
各々に上記の方法で変換すればよい。 ? 整数部 – 2で割った余りを ? 小数部 – 2を掛けた整数部を
10.
8 進数、 16
進数 ? 10進数を2進数に変換すると,桁数が多くる。 ? このため3個ずつ区切って8進数(23=8)で表現す ることも多い。 (例5) 1 | 111 | 011(2) = 173(8) = 1 × 82+7 × 81+3 × 80 ? 近年は別の理由から4個づつ対応させて16進数(24 =16)で表現することが多い。 – 16進数では1つの桁を表すのに16種類の文字がいるので, 0,1,…,9,A,B,C,D,E,Fを用いている。 (例6) 111 | 1011(2) = 7B(16) = 7 × 161+13 × 160
11.
進数変換 10進数 2進数 8進数 16進数 0 0000 00 0
? 【注意】8進数、1 1 0001 01 1 6進数に変換する場 2 0010 02 2 3 0011 03 3 合、2進数を経由し 4 0100 04 4 なくてもよい。 5 0101 05 5 ? 10進2進の変換方 6 0110 06 6 7 0111 07 7 法で2をかけたり、 8 1000 10 8 2で割ったりすると 9 1001 11 9 ころで、2の代わり 10 1010 12 A 11 1011 13 B に8、または16を 12 1100 14 C 用い、余り、または 13 1101 15 D 整数部を取り出せば 14 1110 16 E 15 1111 17 F よい。
12.
ビット、バイト、語 ? ビット(bit)
– 計算機の最小記憶単位であり,1ビットで0,1の2種類の状 態を表現する。 ? バイト(Byte) – 文字の記憶単位であり,昔の計算機では1つの文字を表現する のに6ビットを用いるものが多かったが,近年の計算機では1 つの文字を表現するのに8ビット又は9ビットを用いている。 これをバイトという。 ? ニブル( nibble ) – 最近は1B=8 bits のマシンが増え、 16 進数で表現する機会が 増えてきた。このため 16 進数一桁に対応する 4bits を「ニブル 」という。
13.
? 語 word
– 数値の記憶単位であり,そのビット数は機種によりまちまちで ある。近年のマイコンを除き次のような数の機種がある。 – 1語 = 16ビット – = 32 – = 36 – = 48 – = 60 – 以前は小型,中型では16ビット(=2バイト)、大型では3 2ビット(=4バイト)以上と分かれていたが、近年では32 ビットが普通になった。昨年あたりから64ビットが普及し始 めている。 – 以下の例では1バイト=8ビット,1語=16ビット=2バイ トで述べることが多い。
14.
数値の表現形式 ? 数値の記憶単位である「語」の中に、実際の値をどのよ
うに格納するか、それが「数値の表現形式」である。 – 固定小数点形式 fixed binary – 浮动小数点形式 flowting binary – 10 進数形式 BCD = binary coded decimal ? よく用いられるのは上の2つ、固定小数点形式と浮動小 数点形式である。
15.
固定小数点形式
fixed binary ? 小数点の位置が固定された表現形式 ‥‥通常,最右桁の次に小数点の位置を仮定する‥‥ であり,通常整数値に用いる。 (例1) 7の固定小数点表現 0000000000000111 ↑ ここに小数点を仮定する
16.
浮动小数点形式
flowting binary ? 固定小数点形式では小数点の位置が固定されているため 通常の実数(少数)を表現できない。 ? このため10進数の精度表現で用いたように 1500 と 0 . 15 × 10 4 小数と10のベキ乗の積という形と似た形式で表現する のが浮动小数点形式である。計算機では10のベキ乗と は限らず一般には 0.m 1 m 2 ??? × be 1 e 2 ??? (例えば,0.1101 (2) × 2 11(2) = 110.1 (2) = 6 .5 (10) ) という形式で表す。ここで m 1 m 2 ??? の部分を〈仮数部〉, e 1 e 2 ??? の部分を〈指数部〉, b を〈底〉という。
17.
つづき (例2) 0.1101(2) × 211(2) の浮動小数点表現 ???0011
| 0 | 1101??? 指数部 ↑ 仮数部 この位置を仮の小数点(仮想小数点)という。
18.
負数の表現形式 ? この節では固定小数点に限って話しをしていく –
浮動小数点のときには,仮数部の負数の表現形式と考えればよ い ? 正整数の固定小数点形式表現は前節で述べた通りで ? 負の整数はどのように表現したらよいか考えてみよう。 ? 符号付き絶対値表現 ? 下駄上げ表現 ? 2の補数表現
19.
符号付き絶対値表現 ? 1語を構成するbit列のうち,特定のビットが符号を
表すことにする。 ? 通常第0ビットを符号に用い,オフ(0)のとき 正 又は 零,オン(1)のとき 負を表す。 ? 残りのビットは符号を除いた絶対値を固定小数点形式で 表現する。 (例1) 10(10) = 0000000000001010(2) ↑ 正 -10(10) =1000000000001010(2) ↑ 負
20.
下駄上げ表現 ? 負数の表現形式の一つとして、「下駄はかせ」の方式が
ある。いわゆるテストの点数に下駄を履かせて成績を付 けるやつである。テストの点数の場合には0点から10 0点までの値しかなく、下駄を例えば30点とすれば、 テストの生点に30点加えたものが成績の点数になる。 ? 計算機の値の表現の場合も考え方は同じで、表現したい 生の値に「下駄」の値を加えた値を,内部的に表現する ことにする。「下駄」の値としては最左端ビットだけを 1にしたもの(1語nビットの場合 2 n-1 )を用いるの が普通である。
21.
下駄上げ表現(つづき) 100 (10) =1100100
(2) をあらわす場合、 0000000001100100 +)1000000000000000 ( 下駄 ) 1000000001100100 -100 (10) では 1000000000000000 ( 下駄 ) -)0000000001100100 0111111110011100 ? 結果的に最左端ビットが符号を表すことになり、0 の時負、1の時正の値を表す。 ? この下駄上げ表現は「浮動小数点」の「指数部」 の表現として使われることが多い。
22.
2の補数表現 ? 与えられた負数の絶対値を固定小数点表現したものを,
各ビットの0,1を反転し(“1の補数”という), その値に1を加える(“2の補数”という) ? これを,与えられた負数の表現形式とするものであり, 結果として第0ビットが符号を表す。 (例2) -10(10)の“2の補数表現” 絶対値 (+10(10)) 0000000000001010 ビット反転(1の補数) 1111111111110101 1加える (2の補数) 1111111111110110 ? 負数の絶対値の求め方 与えられた負数 1111111111110110 ビット反転 0000000000001001 1加える 0000000000001010
23.
? 計算機では2の補数表現が使われる。 ? 符号付き絶対値表現では
2 つの値の足し算は、符号が (+、+)、(+、-)、(-、+)、(-、-) に応じて処理する必要があつ。 ? 2の補数表現の時には2つの値の符号を考えずに、単純 に足し算を行えばよい。 ? このことを、例で見ていこう。
24.
例3) 5 + 10 = 15 0000000000000101 +) 0000000000001010 0000000000001111 例4) 5 + (-10) = -5 0000000000000101 +) 1111111111110110 1111111111111011 (例5) (-5) + 10 = 5 (例6) (-5) + (-10) = -1 1111111111111011
111111111111101 +) 0000000000001010 +) 111111111111011 10000000000000101 1111111111111000 ↑ ↑ はみ出した部分は無視する はみ出した部分は無視する
25.
練習問題 ? 問1 10
進数の123.675を 2 進数、 8 進数、 16 進数に変換しよう。 ? 問2 10 進数のー123を 2 進数、 8 進数、 16 進数に 変換しよう。 ? 問3 なぜ 2の補数表現,1の補数表現と呼ばれるか 浮動小数点の仮数部に適用して考えよ。 ? 問4 1語のビット数をnとしたとき符号つき絶対値表 現,2の補数表現とでは,各々どのような値の範囲を表 現できるか?
26.
単位 KMGTPE ? 計算機では2進数が使われるため、2の巾乗で数えるこ
とが多い。2の10乗が1024と1000に近いため 、計算機の世界では2 10 を1K(キロ)として取り扱う 。すなわち、 1K(キ ロ) = 210 = 210 (千) 1M(メ ガ) = 210K = 220 (百万) 1G(ギ ガ) = 210M = 230 (十億) 1T(テ ラ) = 210G = 240 (一兆) 1P(ペ タ) = 210T = 250 (千兆) 1E(エクサ) = 210P = 260 (百京)
27.
浮動小数点の表現 ? IEEE754 交換形式
– 符号ビット – 指数部 ? 下駄上げ表現 – 仮数部 ? 絶対値表現
28.
32bits 単精度 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 符 指数部( 8 ビット) 仮数部( 23 ビット、ケチ表現) 号 ? 指数部 – 下駄 01111111 – 1 ~ 254 – 0 のとき、仮数部0であればゼロ – 255 のとき、無限大(仮数部0)、または NaN (仮数部 非 0) ? 仮数部 – 絶対値表現 – 1.xxxx に正規化し、頭の1は記録しない 64bits 倍精度 128bits4 倍精度 指数部 11 ビット 指数部 15 ビット 仮数部 52 ビット 仮数部 112 ビット
29.
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 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 符 指数部( 8 ビット) 仮数部( 23 ビット、ケチ表現) 号 3 F 8 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3F800000 10 進数に直すと? 10 進数の -118.625 はどんなビット配列になるかな?
Download