0x00 加法运算
4+5
0000 0100
0000 0101
--------- XOR
0000 0001 (没有进位的结果)
0000 0100
0000 0101
--------- AND
0000 0100 (不为0,有进位)
--------- << 1
0000 1000 (进位值)
0000 0001 (没有进位的结果)
0000 1000 (进位值)
--------- XOR -> 判断是否有进位
0000 1001 -> 没有进位最终结果(有进位继续重复AND,左移,XOR)
A+B
A XOR B -> C 出去进位的结果
A AND B -> D 进位的位; D=0 C为最终结果; D≠0,向下运算
SHL D, 1 进位的值
C -> A, D -> B
A+B 重复A+B过程
0x01 减法运算
4-5 = 4 + (-5) = 4 + 0xFB
0000 0100
1111 1011
--------- XOR
1111 1111
0000 0100
1111 1011
--------- AND
0000 0000
1111 1111 -> 最终结果 0xFF = -1
减法就是加这个数的相反数
0x02 乘法
X * Y本质是加法 -> X个Y或Y个X相加
有限次循环加法
0x03 除法
X / Y本质是减法 -> X可以减去多少个Y
无限次循环减法,直到结果小于被除数,也就得到了余数
0x04 总结
计算机只认识0 和 1,只会做位运算,不会进行 + - * /等基本运算.
通过位运算衍生出加法运算,通过加法运算衍生出 减法/乘法/除法运算.
基于四则运算计算机可以完成一系列更复杂的运算.
数据宽度 -> 有/无符号数 -> 位运算 -> 四则运算