计算机如何进行加法运算
1 + 1 = 2
我们人类最熟悉的加法, 但是计算机是不知道的
计算机只有2进制, 2进制的底层是各种电路
那么计算机怎么进行加法运算呢? 以前对这个知识一知半解, 后来在油管上看到了一个Computer Science Crash Course的视频, 才恍然大悟
0x01: 神奇的异或门
在2进制里, 加法正好和大名鼎鼎的异或门(XOR)具有同样的属性!!!
比如下图中
① A = 0, B = 0 => Y = A+B =0 (英文叫Sum)
② A = 1, B = 0 => Y = A+B =1
③ A = 0, B = 1 => Y = A+B =1
④ A = 1, B = 1 => Y = A+B =0
异或和加法的对比
0x02 或非门+与门
上面的规律完美吗?
完美, 假如只考虑1位的话
如果世界只有1位, 就太枯燥了吧
再考虑上面④的算式, 如果必须考虑, 就可以改为
A = 1, B = 1 => Y = A+B =0 ( 进1位, 英文叫Carry)
神奇的现象出现了!!!
[微笑] 不考虑进位的加法就是异或(XOR)
[呲牙] 包含进位的加法, 就是在XOR上再加一个与运算(AND)
如果不懂异或门, 就想象成一个生活规律, 异性相吸, 同性相斥, 男女搭配 => 干活不累
如果你不懂与门, 就想象成一个数学知识, 正数乘以正数,才能得到正数, 其余都得不出正数
下图中的C是新加列, 就是与运算AND的结果, 加上这一列, 我们的加法表完美了![握手]
带进位的加法表
0x03 电路就是一个XOR+AND
这么简单的表,但是电脑也不认得, 到底怎么计算?
无数的牛人终于想出了用电路模拟加法的办法
XOR+AND = 加法器
0x04 最后的思考
计算机的世界就好比无数个微观空间, 一个空间是一位(1 bit), 像一朵黑白两色的花朵,又像是阴阳两极构成的太极图, 两个只有白昼和黑夜的平行世界...
两个平行世界, 相互碰撞相加, 结果就是将不同元素(1, 0 )融合, 演化出延续的实体(1), 相同的元素抵消, 化为虚无(0)
如果出现了本级世界容不下的大牛(1 + 1 产生了进位!!! ), 就干脆让他白日飞升把, 推送到上一级微观空间, 我们的世界就清净了
该上一级世界再碰撞吧