コンピュータは二進数で計算するのは知ってるよな。
例えば、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 (桁あふれ無視)

つまり正の値になる。これがコンピュータ流の単純明快な答え。
人間は負の数を表すのに「-」なんつー特別な記号を使ってるから、
負の数の掛け算に新たな定義が必要になる。諸悪の根源は記号「-」だ。