マイナスかけるマイナスはなぜプラス?
■ このスレッドは過去ログ倉庫に格納されています
0078132人目の素数さん
2007/11/18(日) 04:56:41例えば、2進数4桁を同時に扱える「4ビットCPU」なら、
0010 = 十進数の 2、0101 = 十進数の 5、とか表す。
負の数や引き算では、ビット反転を利用した「補数」が使用される。
例えば -2 は、0010 を反転し 1101、最後に1を足して 1110 と表す。
これを「2の補数表現」という。無理矢理 0000 - 0010 を計算した結果
と考えてもよい。検算してみよう。
0010 = 十進数の 2
+ 1110 = 十進数の -2
-------
0000 = 十進数の 0 (桁あふれ無視)
つまり 2 + (-2) = 0 が成り立つ。また、補数表現を使うと最上位桁は
符号を表す。1なら負、0 なら非負だ。
ではこの2の補数表現で、(-2) ×(-1) を計算してみよう。
1110 = 十進数の -2
× 1111 = 十進数の -1
---------
1110 ← 1倍
110 ← 2倍は 1110 を左1回シフト(桁あふれ無視)
10 ← 4倍は さらに左1回シフト 〃
+ 0 ← 8倍は さらに左1回シフト 〃
---------
0010 = 十進数の 2 (桁あふれ無視)
つまり正の値になる。これがコンピュータ流の単純明快な答え。
人間は負の数を表すのに「-」なんつー特別な記号を使ってるから、
負の数の掛け算に新たな定義が必要になる。諸悪の根源は記号「-」だ。
■ このスレッドは過去ログ倉庫に格納されています