0 0 1 0 1 0 1 1 電子回路学 講義#3: 負の表現法 1 0 0 1 0 1 0 1 1 n 2進数:「正」と「負」の値 絶対値のみと考えれば、3ビットで8つの値、4ビット で16個の値など表せますが、符号が必要となると... 2進数 0000 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 4 2 1 10進数 +0 +1 +2 +3 +4 +5 +6 +7 2 1 符号付き2進数 0 0 1 0 1 0 1 1 n n 先頭に一つのビットを付けて、符号にします 「符号付き2進数」の先頭ビットは正 = 0、負 = 1です 2進数 0000 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 10進数 +0 +1 +2 +3 +4 +5 +6 +7 4 2 1 0 0 1 0 1 0 1 1 n n 2進数 1000 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 10進数 -0 -1 -2 -3 -4 -5 -6 -7 4 2 1 3 符号付き2進数:特徴 作成は、2進数に符号ビットを付けるだけで容易です しかし、0は表現が二つ(+0, −0)あります 2進数 0000 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 10進数 +0 +1 +2 +3 +4 +5 +6 +7 2進数 1000 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 10進数 -0 -1 -2 -3 -4 -5 -6 -7 4 2 符号付き2進数:短所 0 0 1 0 1 0 1 1 n 値用のビットは一つ減り、値の範囲は狭くなります n 4ビットで通常0〜15表せますが、符号付きでは0〜7です 2進数 0000 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 10進数 +0 +1 +2 +3 +4 +5 +6 +7 2進数 1000 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 10進数 -0 -1 -2 -3 -4 -5 -6 -7 5 符号付き2進数:短所 0 0 1 0 1 0 1 1 n 引き算は、足し算の回路で行えない n n 計算機(パソコン、CPU)の回路の多目的の利用は望ましい 正と負の値を(足し算の回路で)足すと、間違った結 果を得てしまいます 1 10 0 1 0 0 1 0 1 +5 + 1 1 0 1 -5 1 +2 ! 6 3 問題#11の類似問題 0 0 1 0 1 0 1 1 n -54(10)の符号付き2進数を示しなさい 1 ← 3 ← 6 ← 13 ← 27 ← 54 (÷2 ↓ ↓ ↓ ↓ ↓ ↓ 1 1 0 1 1 0 110110(2) (負の)符号のビットを先頭に付けるだけ: 1 110110(2) 7 1の補数 0 0 1 0 1 0 1 1 n 2進数を一桁ずつを反転(否定)させますと、その2進 数の「1の補数」が得られます n n 否定:1→0への変換、および0→1への変換を指します 特徴:負の値を表すために使用できます 符号 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 8 4 1の補数:短所 0 0 1 0 1 0 1 1 n n 符号用のビットは必要です この方法でも、0は表現が二つあります 2進数 0000 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 1 n n 1の補数 1111 1110 1101 1100 1011 1010 1001 1 0 0 0 10進数 -0 -1 -2 -3 -4 -5 -6 -7 9 1の補数:短所 0 1 0 10進数 +0 +1 +2 +3 +4 +5 +6 +7 表現範囲は半分となります 下記の例では、4ビットで、-7 ~ +7しか表せません 2進数 0000 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 10進数 +0 +1 +2 +3 +4 +5 +6 +7 1の補数 1111 1110 1101 1100 1011 1010 1001 1 0 0 0 10進数 -0 -1 -2 -3 -4 -5 -6 -7 10 5 1の補数:長所 0 0 1 0 1 0 1 1 n n 引き算を加算(回路)で行えますが、 桁上げが溢れると、それを結果に加算する必要となり ます 符号 + 0101 1011 10000 + 1 0001 +5 -4 0? +1 11 0 0 1 0 1 0 1 1 n n n 問題#16の類似問題 -6(10)の1の補数の表現はどれか 解答例:まず符号なし正の値を2進数で表現して、 ビットの符号を付けて、ビットごとに反転(0を1に; 1を0に)します 1 ← 3 ← 6 (÷2 ↓ ↓ ↓ 1 1 0 0110(2) 結果: 1001(2) 12 6 負数:2の補数 0 0 1 0 1 0 1 1 n 2の補数は、対象数字の「1の補数」に1を足して得ら れます 符号 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 + 1 1 0 1 0 1 0 1 1 0 0 13 2の補数:生成の簡易方法 0 0 1 0 1 0 1 1 n n 1の補数も、1の足し算も不要です やり方:2進数の最も右の(最下位)ビットから左へ1 ビットずつ進みます n 符号 最初の「1」まで、各々の桁(ビット)をそのまま記す 0 1 0 1 0 1 0 1 0 0 ↓ 0 14 7 2の補数 0 0 1 0 1 0 1 1 n 2進数の最も右の(最下位)ビットから左へ... n 最初の「1」まで、各々の桁(ビット)をそのまま記す 0 1 0 1 0 1 0 1 0 0 ↓ 0 0 15 2の補数 0 0 1 0 1 0 1 1 n 2進数の最も右の(最下位)ビットから左へ... n n 最初の「1」まで、各々の桁(ビット)をそのまま記す それ以降の全ビットを反転(否定)します 0 1 0 1 0 1 0 1 0 0 ↓ 1 0 0 16 8 2の補数 0 0 1 0 1 0 1 1 n 2進数の最も右の(最下位)ビットから左へ... n n 最初の「1」まで、各々の桁(ビット)をそのまま記す それ以降の全ビットを反転(否定)します 0 1 0 1 0 1 0 1 0 0 ↓ 1 1 0 0 17 2の補数 0 0 1 0 1 0 1 1 n 2進数の最も右の(最下位)ビットから左へ... n n 最初の「1」まで、各々の桁(ビット)をそのまま記す それ以降の全ビットを反転(否定)します 0 1 0 1 0 1 0 1 0 0 ↓ 0 1 1 0 0 18 9 2の補数 0 0 1 0 1 0 1 1 n 2進数の最も右の(最下位)ビットから左へ... n n 最初の「1」まで、各々の桁(ビット)をそのまま記す それ以降の全ビットを反転(否定)します 0 1 0 1 0 1 0 1 0 0 ↓ 1 0 1 1 0 0 19 2の補数 0 0 1 0 1 0 1 1 n 2進数の最も右の(最下位)ビットから左へ... n n 最初の「1」まで、各々の桁(ビット)をそのまま記す それ以降の全ビットを反転(否定)します 0 1 0 1 0 1 0 1 0 0 ↓ 0 1 0 1 1 0 0 20 10 2の補数 0 0 1 0 1 0 1 1 n 2進数の最も右の(最下位)ビットから左へ... n n 最初の「1」まで、各々の桁(ビット)をそのまま記す それ以降の全ビットを反転(否定)します 0 1 0 1 0 1 0 1 0 0 ↓ 1 0 1 0 1 1 0 0 21 2の補数 0 0 1 0 1 0 1 1 n 2進数の最も右の(最下位)ビットから左へ... n n 最初の「1」まで、各々の桁(ビット)をそのまま記す それ以降の全ビットを反転(否定)します 0 1 0 1 0 1 0 1 0 0 ↓ 0 1 0 1 0 1 1 0 0 22 11 2の補数 0 0 1 0 1 0 1 1 n 2進数の最も右の(最下位)ビットから左へ... n n 最初の「1」まで、各々の桁(ビット)をそのまま記す それ以降の全ビットを反転(否定)します 0 1 0 1 0 1 0 1 0 0 ↓ 1 0 1 0 1 0 1 1 0 0 23 2の補数での加算と減算 0 0 1 0 1 0 1 1 n 2の補数:長所 n n 通常の加算(回路)で減算できる 例: +2 −8 の計算 +2 → 0 0 0 1 0 +8 → 0 1 0 0 0 → −8 :1 1 0 0 0 00010 + 11000 24 12 2の補数:長所 0 0 1 0 1 0 1 1 n n 通常の加算(回路)で減算が行えます 計算例: +2 −8 + 00010 11000 +2 -8 11010 00110 -6 16 8 4 2 1 25 2の補数での減算 0 0 1 0 1 0 1 1 n n n 計算例: +9 – 8 正の結果の場合は、あふれるビットを無視します 結果の符号で、2の補数を取るか否かを判定する n 0の場合は、結果の2の補数を取らない + 01001 11000 100001 +9 -8 +1 26 13 2の補数での負の値の加算 0 0 1 0 1 0 1 1 n 2の補数:例題 -2-8の計算 n n あふれるビットを無視 結果の符号で、「絶対値」を得るために2の補数を取るか否 かを判定する n 1の場合は、結果の2の補数をとります + 11110 11000 110110 -2 -8 -10 01010 10 27 0 0 1 0 1 0 1 1 n 問題#21の類似問題 -368(10)の2の補数はどれか 1 ← 2 ← 5 ← 11 ← 23 ← 46 ← 92 ← 184 ← 368 (÷2 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 1 0 1 1 1 0 0 0 0 0101110000(2) 右端から左端へ: 1010010000(2) 28 14 0 0 1 0 1 0 1 1 n 問題#26 77 – 45の引き算を2の補数で行って得られる結果はど れか 1 ← 2 ← 4 ← 9 ← 19 ← 38 ← 77 (÷2 ↓ ↓ ↓ ↓ ↓ ↓ ↓ 1 0 0 1 1 0 1 1 ← 2 ← 5 ← 11 ← 22 ← 45 (÷2 ↓ ↓ ↓ ↓ ↓ ↓ 1 0 1 1 0 1 29 0 0 1 0 1 0 1 1 n n n 問題#26 一番長い数字に符号のビットを付けて もう一つの数字をその長さに合わせます 負の値を2の補数に変えて、足します 77(10) = 01001101(2) 45(10) = 00101101 - 45(10) = 11010011 01001101 + 11010011 100100000 = 32(10) 30 15 0 0 1 0 1 0 1 1 n n ME試験問題【21-34】 10進数の10,11,12,・・・・を16進数でA,B,C,・・・・と表記す るとき、16進数6とAとの和を16進数で表した結果はど れか 解答例:6と10の和は16であるため、16進数では10(16) と表す。故に、正解は4)である 31 0 0 1 0 1 0 1 1 n n n n 注意 負の値を表すすべての方法には、符号用のビットを加 えます 問題をやるときは、このことに注意すること 引き算の問題で、一番ビットの長い(ビット数の多 い)値の長さに、もう一方の数字の長さを合わせます 2, 8と16の足し算は、2進数でやってから結果の求めら れる基数に最後に変換する方法も可能です 32 16 授業内容の電子版 0 0 1 0 1 0 1 1 n 科目のページ n http://www.cc.toin.ac.jp/sc/palacios/ce/digital/ n から、授業のpdfフィアルをダウンロードできます 33 17
© Copyright 2024 ExpyDoc