计算机–加法的实现
本例采用数值:
4–>100
5–>101
前置知识
1.与(&) 或(|) 非(~) 异或(^)
与(双目运算) 两个数按位进行比较,如果相同的位均为1,则结果为1,否则结果为0.
100
101
----------与(&)
100
或(双目运算) 两个数按位进行比较,如果相同的位有一个值为1,则结果为1,否则结果为0.
100
101
-----------或(|)
101
非(单目运算) 将一个数按位进行反转,0变成1,1变成0.
100 101
--------------------非(^)
011 010
异或(双目运算) 两个数按位进行比较,只有相同的位一个为1,一个为0,结果才为1,否则为0
100
101
-----------异或(^)
001
2.左移(<<)右移(>>)
左移(<<) 二进制数按位向左移动,最低位补0
100 <<1 -->000
101 <<1 -->010
右移(>>) 二进制数按位向右移动,最高位补与之前最高位相同的数
100 >>1 -->110
101 >>1 -->110## 加法的实现
加法的实现
第一步:异或,求出不需要进位的结果
0000 0100
0000 0101
--------------异或(^)
0000 0001
第二步: 与运算,判断进位,若结果为0,则不需要进位
0000 0100
0000 0101
--------------与(&)
0000 0100
第三步: 将与运算的结果,左移一位(满2进1)
0000 0100 << 1 -->0000 1000
第四步:异或 计算结果
0000 0001
0000 1000
--------------异或(^)
0000 1001
第五步:与运算检验 将第一步与第三步结果进行与运算判断进位 如果结果为0,则上一步为正确结果,否则转到第三步继续进行运算
0000 0001
0000 1000
--------------与(&)
0000 0000
参考
【狂神说】最通俗易懂的计算机底层教学,二进制到汇编学习!--------https://www.bilibili.com/video/BV1ni4y1G7B9?p=10