请不要告诉我将数字转换为正数并尝试将其作为 - X - = +
数字是-3(101)
-3 X -3 = +9
如何用二进制来完成这笔总和?
感谢。
答案 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提供了其中一些方法,包括不需要先将数字转换为反转方法的方法。