neur2520 发表于 2012-3-14 23:17:46

wAterLoo 发表于 2012-3-15 03:27:12

本帖最后由 wAterLoo 于 2012-3-15 22:31 编辑

我简单的说说吧
and 1,1 = 1   xor 1,1,0
and 1,0 = 0   xor 1,0,1
and 0,1,= 0   xor 0,1,1
and 0,0, =0   xor 0,0,0
你看(注意这里是二进制运算)
a   b   和
1 + 1 = 10,
1 + 0 = 01
0 + 1 = 01
0 + 0 = 00
请看两数相加的个位数,是不是和xor的结果一样呢?
再看和的十位(也就是左边的位)是不是和and操作的结果一样呢?
当执行 1 + 1 的时候, 我们先用xor 1,1 得出的结果也就是0,那么我们就用这0表示个位
我们再用 and 1,1 ,得出的结果是1,
把2个结果放在一起是不是就是10,也就是1+1(二进制运算)的结果
好,想象一下,如果你的CPU只有一位,1+1的结果却占有2位,这时候怎么表示10呢?
我们可以这样,假设xor操作的结果会放在一个一位的寄存器,这个寄存器如果是1,就表示两个数想加有进位
为0就是说没有,这时候你只要查看这个寄存器的值你就知道是否有进位了
希望能对你有所帮助
强烈推荐你去看看《编码的奥妙》,里面有CPU电路实现的原理
下载地址:http://www.fishc.com/a/book/huibian/627.html


已更正

谢青源 发表于 2012-3-15 05:18:34

这个我还没有学到,看不懂代码...

neur2520 发表于 2012-3-15 21:34:12

wAterLoo 发表于 2012-3-15 22:27:38

本帖最后由 wAterLoo 于 2012-3-15 22:30 编辑

是and,半夜里面脑子有点混 - -:dizzy:
页: [1]
查看完整版本: 求CPU做加法的逻辑思路