x:とy:に数値を入力して、「+」ボタンを押してみて下さい。
表現方式:符号無し、符号+絶対値、1の補数、2の補数、バイアス符号無し |
x, y, x+y∈[0, 255]([0, 2N-1]) X = x, Y = y x + y = X + Y ・正+正で正になるときは、桁あふれしない限り、 形式的加算で正しい計算ができる ・正−正は2の補数を加算(正+(-正))して、 正になるとき、形式的加算でOK!(C=1) 負になるとき、形式的加算でNG!(C=0) |
符号+絶対値 |
x, y, x+y∈[-127, 127]([-(2N-1-1), 2N-1-1]) X = sx・|x|, Y = sy・|y| ・正しい計算方法は: ・sx=sy のとき x + y = s・( |x|+|y| ) ・sx≠sy のとき x + y = smax(|x|,|y|)・( max(|x|,|y|)-min(|x|,|y|) ) ・正+正で正になるときのみ x + y=X + Y でOK! |
1の補数 |
x, y, x+y∈[-127, 127]([-(2N-1-1), 2N-1-1]) ・x, y≧0 のとき X = x, Y = y ・x, y<0 のとき X = 255 - |x| = 255 + x, Y = 255 - |y| = 255 + y ・正+正で正になるとき x + y=X + Y でOK! ・正+負で正になるとき x + y≠X + Y = x + y + 255 で1ずれる! ・正+負で負になるとき 255 + x + y=X + Y = 255 + (x + y) でOK! ・負+負で負になるとき 255 + x + y≠X + Y = 255 + (x + y) + 255 で1ずれる! |
2の補数 |
x, y, x+y∈[-128, 127]([-(2N-1), 2N-1-1]) ・x, y≧0 のとき X = x, Y = y ・x, y<0 のとき X = 256 - |x| = 256 + x, Y = 256 - |y| = 256 + y ・正+正で正になるとき x + y=X + Y でOK! ・正+負で正になるとき x + y←X + Y = x + y + 256 でCを無視すればOK! ・正+負で負になるとき 256 + x + y=X + Y = 256 + (x + y) でOK! ・負+負で負になるとき 256 + x + y←X + Y = 256 + (x + y) + 256 でCを無視すればOK! |
x, y, x+y∈[-B, 255-B]([-B, 2N-1-B]) X = x + B, Y = y + B x + y + B≠X + Y = x + y + 2B ・常にバイアス分だけずれる! ・B=128 のときは、 結果が正になるとき x + y=X + Y - 256 なのでCを無視して、 結果が負になるとき 256 + x + y=X + Y なのでそのまま、 2の補数表現で結果が得られる! |