第5回 ディジタル回路内の数値表現 瀬戸 ディジタル回路内部で,数を表現する方法(2進数)を学ぶ 10進数⇔2進数⇔16進数の変換ができる 2のべき乗を、K, M, Gを使ってすぐに表せる 2の補数表現を説明できる 10進数⇔2の補数表現の変換ができる http://www.ee.tcu.ac.jp/lectures/digital/index.html ユーザ名: tcu パスワード: seto
数 非負 の整数 整数 正負 の整数 固定 小数点数 小数 浮動 小数点数 ディジタル回路内で使用される数の分類 0,1,2,3,... 本講義で学習 非負 の整数 0,1,2,3,... 符号 なし 整数 正負 の整数 ...,-2,-1,0,1,2,... 符号 つき 数 固定 小数点数 1.52 固定 小数 浮動 小数点数 1.52 移動
10進数、2進数、16進数 10進数 (decimal number) 日常的に使用している数 2進数 (binary number) 0~9 の10種類の数字 200810年 2進数 (binary number) コンピュータ、ディジタル回路の中で使用 0, 1の2種類の数字 (1 ... Hレベル, 0 ... Lレベル) 111110110002年 (長くて,見にくい...) 16進数 (HEXadecimal number) 2進数を短く表示するために使用 0~9, A, B, C, D, E, Fの16種類の文字 7D816年
そもそも10進数って? (復習) 2008 =(2x103)+(0x102)+(0x101)+(8x100) そもそも10進数って? (復習) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9の9個の数字を使用 例 2008 =(2x103)+(0x102)+(0x101)+(8x100) 1973 =(1x103)+(9x102)+(7x101)+(3x100) 10のべき乗で重み付け 1000の位 100の位 10の位 1の位
本日のテーマ - 2進数 ライプニッツが発明 ドイツの数学者、哲学者 微積分記号の提案 2進数の提案 本日のテーマ - 2進数 ライプニッツが発明 ドイツの数学者、哲学者 微積分記号の提案 2進数の提案 「全ての数を1と0によって表す驚くべき表記法」 (1692年)
符号無し2進数は、どんなものか? 0, 1の2種類の数字だけを使用 (0以上の数) 符号無し2進数の例 1101 = 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = 8 + 4 + 0 + 1 = 1310 2のべき乗 8の位 4の位 2の位 1の位 最上位ビット MSB 最下位ビット LSB 10進数への変換: “10進数”を表す
では、符号無し2進数は、どんなものか? n個のビット列 an-1an-2...a0で以下の数を表す と決める 例: 3ビットの場合、 0 ~ 7 まで表せる
では、16進数は、どんなものか? 0, ..., 9, A, B, C, D, E, F の16種類の文字を使う 例 1AB= 1 x 162 + A x 161 + B x 160 = 256 + 160 + 11 = 42710 = = = = = = 10 11 12 13 14 15 16のべき乗 256の位 16の位 1の位 10進数への変換:
2進数 ⇔ 16進数の変換 (簡単) 7 5 C 11 1010 1011 2進数は長ったらしいので、16進数に変換することが多い 変換例1: 111010111002を16進数に直せ 最下位ビット( 右 )から4ビットずつ区切り,変換 111 _ 0101 _ 1100 = 75C 変換例2: 3AB16を2進数に直せ 各数字を,2進数にして,つなげる 3 A B = 1110101011 7 5 C 11 1010 1011
10進数 16進数 2進数 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 A 1010 11 B 1011 12 C 1100 13 D 1101 14 E 1110 15 F 1111 符号無し数 の2進表現 のまとめ
+ + 2進数の加算 (ディジタル回路で実行可能) 0+0 = 0 0+1 = 1 1+0 = 1 1+1 = 10 (1繰上がり) 通常の数(10進数) と 全く同様の方法で、筆算できる 一桁分の加算 4ビットの加算 0+0 = 0 0+1 = 1 1+0 = 1 1+1 = 10 (1繰上がり) 1 0 0 1 910 + 0 1 0 1 510 0 0 1 繰上がり 1 0 0 1 910 + 0 1 0 1 510 1 1 1 0 1410
0,1だけで “もの”を表す方法 (複数) nビットでは、最大 2n 通りの“もの”が表せる 3ビットだと,2×2×2 = 8 通り 例 0,1だけで “もの”を表す方法 (複数) nビットでは、最大 2n 通りの“もの”が表せる 3ビットだと,2×2×2 = 8 通り 000, 001, 010, 011, 100, 101, 110, 111 例 スイッチの状態 ( 1 ビット) on: 1, off: 0 3色( 2 ビット) アルファベット 26文字 ( 5 ビット = 25 = 32 ) A: 00000, B: 00001, C: 00010, .... 01 10 11
0,1だけでどうやって数を表すのか? (1) 数も“もの”の一種 nビットでは、 最大2n個の“数”が表せる 3ビットの場合、 0, 1, 2, 3, 4, 5, 6, 7 (= 23 – 1 ) 例 4ビット: 最大 24-1 = 15 ( 1111 ) 8ビット: 最大 28-1 = 255 ( 11111111 ) 「0」の分、 1引いている
よく出る 2nの値 (覚えておく) 任意の2nの簡単な計算法 2ab = 210 x a x 2b 計算例 1 2 4 3 8 16 5 32 6 64 7 128 256 9 512 65536 n 2n 呼び名 10 1,024 ≒ 103 K 20 1,048,576 ≒ 106 M 30 1,073,741,824 ≒ 109 G 40 1,099, 511,627,776 ≒ 1012 T 任意の2nの簡単な計算法 2ab = 210 x a x 2b 計算例 224 = 220 x 24 = 16M 232 = 230 x 22 = 4G
a5 a4 a3 a2 a1 a0 10進数から2進数への変換 a0 a1 a2 a3 a4 a5 1 1 0 1 0 1 余り 2進数 2 53 26 13 6 3 1 ・・・ ・・・ a0 a1 a2 a3 a4 a5 1 最下位 ビット 最上位 ビット 2 2 a5 a4 a3 a2 a1 a0 2 1 1 0 1 0 1 2 2 必ず検算をする! (2進数→10進数)
符号つき2進数の表現法: 2の 補数表現 1 x -23 + 0 x 22 + 1 x 21 + 1 x 20 符号つき2進数の表現法: 2の 補数表現 以上では、符号なし( 0 か 正 )の2進数のみを考えた 負を含む,符号つきの数は、どうやって0,1で表すのか? nビット an-1an-2...a0の2の補数表現は,次の値を表す 最上位 ビットが1だと負で,0だと正(0) (符号ビット) 2の補数の例: 4ビットの2の補数 1011が表す値は? 1 x -23 + 0 x 22 + 1 x 21 + 1 x 20 = -8 + 0 + 2 + 1 = -5 マイナス(これが肝) 確かに負の数を表現できる
例:4ビットの2の補数表現 範囲:-8~7 最上位 ビットが 0だと非負, 1だと負 2進数 10進数 0000 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 -8 1001 -7 1010 -6 1011 -5 1100 -4 1101 -3 1110 -2 1111 -1 例:4ビットの2の補数表現 範囲:-8~7 最上位 ビットが 0だと非負, 1だと負 0000が「0」を表現するため, 負 数が,正 数より1個多い 負の数の最上位ビットは 「 1 」 符号 ビットと呼ぶ
2の補数の簡単な計算法 マイナス をつけることに相当 方法 反転して、1を足す 例: 01102(=610)の2の補数 0 1 1 0 10進数 2進数 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 -8 1000 -7 1001 -6 1010 -5 1011 -4 1100 -3 1101 -2 1110 -1 1111 2の補数の簡単な計算法 マイナス をつけることに相当 方法 反転して、1を足す 例: 01102(=610)の2の補数 2の補数の性質 数xの2の補数の、そのまた 2の補数は、xに戻る 0 1 1 0 610 反転 1 0 0 1 1を足す 1 0 1 0 -610
10進数⇒2の補数表現 への変換方法の例 +6 -12 -1 (-12と同様の方法) 次の10進数を5ビットの2の補数表現(符号付き2進数)で表せ +6 6を符号無し2進数で表現: 110 5ビットに拡張するため,4,5ビット目に0を追加: 00110 -12 対応する正の値(12)を、5ビットの2の補数で表現: 01100 反転して1を足す: 10011 + 1 = 10100 -1 (-12と同様の方法) 1を、5ビットの2進数で表現: 00001 反転して1を足す: 11110+1 = 11111
2進数の注意点 例: 11112 符号無し2進数と見ると 符号付き2進数(4ビットの2の補数)と見ると 符号無しと見るか,符号付き(2の補数表現)と見るかで,符号ビットが1の場合に異なるので,どちらかを意識する 例: 11112 符号無し2進数と見ると 1 x 23 + 1 x 22 + 1 x 21 + 1 x 20 = 8 + 4 + 2 + 1 = 15 符号付き2進数(4ビットの2の補数)と見ると 1 x -23 + 1 x 22 + 1 x 21 + 1 x 20 = -8 + 4 + 2 + 1 = -1
ディジタル回路内部での,数値の表現法を学習 2進数 まとめ ディジタル回路内部での,数値の表現法を学習 2進数 符号無し2進数 (0以上の整数を表現. ) 符号付き2進数 (2の補数表現.正負の整数を表現) 2進数(符号付き/無し)、16進数、10進数の相互変換 中間試験の範囲 第1回~第6回までの講義内容,演習問題,宿題