我简单的说说吧
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
已更正
这个我还没有学到,看不懂代码...
本帖最后由 wAterLoo 于 2012-3-15 22:30 编辑
是and,半夜里面脑子有点混 - -:dizzy:
页:
[1]