二进制乘法 - 负数X负数

时间:2013-02-21 18:12:37

标签: math binary

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

数字是-3(101)

-3 X -3 = +9

如何用二进制来完成这笔总和?

感谢。

2 个答案:

答案 0 :(得分:4)

负整数通常以2的补码表示形式存储,这意味着当m位数-x存储为2 m -x时。这就是两个补充名称的来源:添加x结果的完全幂为2。

假设我们使用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。

答案 1 :(得分:2)

您似乎正在寻找为2's complement ...

中表达的值执行乘法的方法

web page from Karen Miller, at U. of Wisconsin提供了其中一些方法,包括不需要先将数字转换为反转方法的方法。