Document

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