2013年度 プログラミングⅠ ~ 補数表現とイクセス表現 ~ 担当教員: 幸山 直人 2013年度 プログラミングⅠ 補数表現 10 0 9 -1 8 -2 7 -3 6 -4 5 -5 4 4 3 3 2 2 1 1 0 0 絶対数(通常) 相対数(補数表現) 負の数 正の数 2013年度 プログラミングⅠ オーバーフローとアンダーフロー アンダーフロー 表現可能な数 0 正の数 オーバーフロー 絶対数の最大値 負の数 (補数表現) 絶対数にしろ、相対数にしろ、表現可能な数を 越えた数はコンピュータで扱うことが出来ない。 2013年度 プログラミングⅠ 補数の例 0 0 0 0 0 -1 -1 -1 -1 -1 -2 -2 -2 -2 -2 -3 -3 -3 -3 -3 -4 -4 -4 -4 -4 -5 -5 -5 -5 -5 4 4 4 4 4 3 3 3 3 3 2 2 2 2 2 1 1 1 1 1 0 0 0 0 0 -1 (負の数) -2 (負の数) -3 (負の数) -4 (負の数) -5 (負の数) 2013年度 プログラミングⅠ 補数による演算 0 0 0 0 -1 -1 -1 -1 -2 -2 -2 -2 -3 -3 -3 -3 -4 -4 -4 -4 -5 + -5 = -5 + -5 4 4 4 4 3 3 3 3 2 2 2 2 1 1 1 1 0 0 0 0 4 -3 1 0 2013年度 プログラミングⅠ 表現可能な数を越えた演算(1) 0 0 0 0 -1 -1 -1 -1 -2 -2 -2 -2 -3 -3 -3 -3 -4 -4 -4 -4 -5 + -5 = -5 + -5 4 4 4 4 3 3 3 3 2 2 2 2 1 1 1 1 0 0 0 0 4 3 7 0 2013年度 プログラミングⅠ 演算を行う際の注意事項(1) 表現可能な数 負の数 0 正の数 0 負の数 (補数表現) 正の数 足し算や引き算などの演算を行なった際は、 演算結果が表現可能な数の範囲に収まって いることをチェックする必要がある。 2013年度 プログラミングⅠ 表現可能な数を越えた演算(2) 0 0 0 0 -1 -1 -1 -1 -2 -2 -2 -2 -3 -3 -3 -3 -4 -4 -4 -4 -5 + -5 = -5 + -5 4 4 4 4 3 3 3 3 2 2 2 2 1 1 1 1 0 0 0 0 -4 -3 -7 0 2013年度 プログラミングⅠ 演算を行う際の注意事項(2) 表現可能な数 負の数 0 正の数 0 負の数 (補数表現) 正の数 足し算や引き算などの演算を行なった際は、 演算結果が表現可能な数の範囲に収まって いることをチェックする必要がある。 2013年度 プログラミングⅠ イクセス表現 10 5 9 4 8 3 7 2 6 1 5 0 4 -1 3 -2 2 -3 1 -4 0 -5 絶対数(通常) バイアス (ゲタ) 相対数(イクセス表現) バイアスは5とする 2013年度 プログラミングⅠ イクセス表現された数の例 5 5 4 4 3 3 2 2 1 1 0 -1 -2 -3 > 大小関係が 直ちにわかる 0 -1 -2 -3 -4 -4 -5 -5 3 -1 2013年度 プログラミングⅠ 注意1 2進数における補数表現 最上位ビットが0ならば正の数 最上位ビットが1ならば負の数 2進数におけるイクセス表現 最上位ビットが1ならば正の数 最上位ビットが0ならば負の数 2013年度 プログラミングⅠ 注意2:負の数について(1) 補数表現からイクセス表現への変換 補数表現およびイクセス表現を2進数8桁でそれぞれ表示す る。このとき、負の2進数-x(x>0)の補数表現は28+(-x)である。 また、イクセス表現は(-x)+(28/2-1)であるから、 (イクセス表現)=(28-28)+(-x)+(28/2-1) =(28+(-x))+(28/2-1)-28 =(補数表現)+(28/2-1)-1000000002 と表せる。このとき最後の項は前半の2項の和によって9桁目 に繰り上がりがあることを意味する。すなわち、前半の2項の 和をとり、9桁目の繰り上がりを無視すれば補数表現からイク セス表現への変換が完了する。 2013年度 プログラミングⅠ 注意2:負の数について(2) イクセス表現から補数表現への変換 補数表現およびイクセス表現を2進数8桁でそれぞれ表示す る。このとき、負の2進数-x(x>0)の補数表現は28+(-x)であり、 イクセス表現は(-x)+(28/2-1)であるから、 (補数表現)=28+(-x)+(1-1) =(28/2+28/2)+(-x)+(1-1) =(イクセス表現)+(28/2+1) と表せる。したがって、イクセス表現に(28/2+1)=100000012 を足せば、イクセス表現から補数表現への変換が完了する。
© Copyright 2024 ExpyDoc