之前(很久以前了)在看 Digital Design。才看到了 2‘s complement的时候就卡住了——怎么样也不明白那个乘法是怎么做的。这次终于明白了,不容易不容易……
按照四位表示的来看:-5 就是 把 5(0101) 反过来(1010)再加1(1011); 对应的 -3是 1101。这样,两边相乘是:
-5 * -3:
|1010
* |1101
————————
1111|1010
0000|0000
1111|0100
0010|1000 **
**之前一直在这里不明白,对着书看,书上说是要 negate……
结果今天才顿悟,让我由于乘数最左面是1的缘故(表示符号) ,需要negate 被乘数
原理:乘数(1101)除了左面那个1,剩下的其实是 101。这样,相当于是 -5(1010) * 5(101)。前后差了8(5-(-3)=8)。 所以,需要再加上 8倍的(其实就是最左面那一位表示的weight) 被乘数。就是这个方法了!
很好……终于可以继续我的 Digital Design 之旅了……自学不容易啊……