请不要告诉我将数字转换为正数并尝试将其作为 - X - = +
数字是 -3 (101)
-3 X -3 = +9
这个总和如何以二进制形式完成?
谢谢。
负整数通常以 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。
您似乎正在寻找对以2 的补码表示的值执行乘法的方法...
这个来自威斯康星大学 Karen Miller 的网页提供了其中几种方法,包括不需要首先将数字转换为倒数的方法。