1

请不要告诉我将数字转换为正数并尝试将其作为 - X - = +

数字是 -3 (101)

-3 X -3 = +9

这个总和如何以二进制形式完成?

谢谢。

4

2 回答 2

4

负整数通常以 2 的补码表示形式存储,这意味着作为 m 位数 -x 存储为 2 m -x。这就是二的补码这个名字的由来:加 x 得到二的完全幂。

假设我们使用 32 位,-3 存储为 2 32 -3 = 4294967293。

所以,-3 × -3 = 4294967293 × 4294967293 = 18446744047939747849。但是这个数字不适合 32 位。它溢出了,剩下最后 32 位。这些位自然地编码数字 9。

您想以二进制形式查看它吗?行。-3 是 2 32 -3 是 11111111111111111111111111111101 2

11111111111111111111111111111101×11111111111111111111111111111101 =
 1111111111111111111111111111101000000000000000000000000000001001
        (32 msb)                         (32 lsb)

结果的最低 32 位是 00000000000000000000000000001001 2,即数字 9。

于 2013-02-21T20:01:02.300 回答
2

您似乎正在寻找对以2 的补码表示的值执行乘法的方法...

这个来自威斯康星大学 Karen Miller 的网页提供了其中几种方法,包括不需要首先将数字转换为倒数的方法。

于 2013-02-21T18:19:45.667 回答