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 符号あり加算 符号なし加算結果を 二の補数とみなす ディジタル回路 まとめ ディジタル回路 二の補数 符号なし加算と変わらない 符号ビットからの桁上げは無視 オーバフローは検出する 加算器 「符号あり加算器」と「符号なし加算器」とかはない 単に加算器という 「符号あり加算命令」と「符号なし加算命令」 単に加算命令がある,または, オーバフローの扱いだけが異なる