二の補数

Download Report

Transcript 二の補数

ディジタル回路
9. 補数
五島 正裕
DATE :
ディジタル回路
内容
 補数表現
k 進数 の,k の補数 と k-1 の補数
1.
1.
2.
一の補数 と 二の補数
二の補数の加算
ディジタル回路
補数表現
ディジタル回路
負の数の表現
表現される値
 補数 (complement) 表現:
 「上半分」を負数に充てる
 k 進数
k
の補数
 k-1 の補数
O
元の値
ディジタル回路
補数表現
 k 進数 n 桁
k
の補数
 -x:k
n
から x を引いた値
 k-1 の補数
 - x : k -1 から x を引いた値
n
ディジタル回路
十進数 1桁
補数表現
0
1
2
3
4
5
6
7
8
9
表現される値
0
1
2
3
4
−4
−3
−2
−1
−0
九の補数: 9 から引く
補数表現
0
1
2
3
4
5
6
7
8
9
表現される値
0
1
2
3
4
−5
−4
−3
−2
−1
十の補数: 10 から引く
ディジタル回路
二進数
補数表現
000
001
010
011
100
101
110
111
表現される値
0
1
2
3
−3
−2
−1
−0
一の補数(3桁)
23− 1 = 111 から引く ⇒ 各桁反転
補数表現
000
001
010
011
100
101
110
111
表現される値
0
1
2
3
−4
−3
−2
−1
二の補数(3桁)
23 = 1000 から引く ⇒ 各桁反転し,1 足す
ディジタル回路
符号ビット
 符号ビット (sign bit)
 二進数の場合,最上位桁(ビット)が符号(0 が正,1 が負)と考えてよい
ディジタル回路
一の補数 と 二の補数
表現される値
+11
000
−01
−11
−100
100
011
111
元の値
一の補数
二の補数
ディジタル回路
一の補数 と 二の補数
 一の補数
 ビット反転で得られる
 二の補数
 ビット反転後,+1
ディジタル回路
一の補数 と 二の補数
 一の補数
 加算が困難(1ずれる)
 110 (−1) + 001 (1) = 0111 (−0)
 110 (−1) + 010 (2) = 1000 (+0)
 二の補数
 加算が容易(後述)
 111 (−1) + 001 (1) = 1000 (0)
 111 (−1) + 010 (2) = 1001 (1)
ディジタル回路
二の補数
ディジタル回路
二の補数の加算
 二の補数の加減算
 基本的には,特に何も気にしなくてよい
 符号ビットからの桁上げは無視
 オーバフロー (overflow)
 結果が表現できる範囲にない
 符号ビットがおかしなことになる
● 0 (+) + 0 (+) → 1 (-)
● 1 (-) + 1 (-) → 0 (+)
ディジタル回路
二の補数の加算
111
1 1 1 … −1
1 1 1 … −1
+)
1 1 1 0 … −2
符号ビットからの桁上げ
+)
1
11
11
0 1 1 … +3
0 1 1 … +3
0 0 1 … +1
1 0 0 … −4
+)
0 1 1 … +3
1
1 0 0 … −4
+)
1 1 0 … −2
オーバフロー
1 1 1 … −1
1 0 1 1 … +3
1 0 0 … −4
+)
1 0 0 … −4
1 0 0 0 … +0
ディジタル回路
符号なし加算
z=x+y
2
2
overflow
n +1
n
2
n
y
O
2
n
x
ディジタル回路
二の補数の加算
top view
2
n
−, +
O
overflow
−, −
+, +
+, −
2
n
O
2
2
underflow
n
n−1
O
−2
n−1
−2
n
side view
ディジタル回路
二の補数の加算
2
overflow
n +1
−1
n
2 −1
n
2 −1
O
O
n
2 −1
符号なし加算
符号なし加算結果を
二の補数とみなす
ディジタル回路
n -bit 二の補数の和
符号ありの値
n +1
2
 符号なし加算結果を
二の補数とみなす
n −1
n
2 +2
 符号ビットからの桁上がり
は無視
n
2
0 1...1
1 0 1...1
n −1
2
0 0...0
符号なしの値
1 1...1
O
1 0 0...0
1 1 1...1
n −1
−2
1 0...0
1 1 0...0
ディジタル回路
二の補数の加算
overflow
underflow
符号あり加算
符号なし加算結果を
二の補数とみなす
ディジタル回路
まとめ
ディジタル回路
二の補数
 符号なし加算と変わらない
 符号ビットからの桁上げは無視
 オーバフローは検出する
 加算器
 「符号あり加算器」と「符号なし加算器」とかはない
 単に加算器という
 「符号あり加算命令」と「符号なし加算命令」
 単に加算命令がある,または,
 オーバフローの扱いだけが異なる