不用加减乘除做四则运算
参考博客 用基本位运算实现加减乘除
加法运算
二进制加法思路
参考博客 利用真值表分析,对两个数 x x x, y y y求和。
- 若 x x x, y ∈ { 0 , 1 } y\in \{0,1\} y∈{ 0,1},即 x x x, y y y是一位二进制数, x x x, y y y的和是两数异或的结果: s u m = x xor y sum =x \text{ xor } y sum=x xor y;而进位是两数与的结果: c a r r y = x and y carry= x \text{ and } y carry=x and y。
- 若 x x x, y y y是多位二进制数,则要把低位传上来的进位也要计算进去。则易得 x x x, y y y第 i i i位的和为 s u m i = ( x i xor y i ) xor c a r r y i − 1 sum_i=(x_i \text{ xor } y_i)\text{ xor } carry_{i-1} sumi=(xi xor yi) xor carryi−1,进位为: c a r r y i = ( x i and y i ) or ( y i and c a r r y i − 1 ) or ( x i and c a r r y i − 1 ) carry_i=(x_i \text{ and } y_i) \text{ or } (y_i \text{ and } carry_{i-1}) \text{ or } (x_i\text{ and } carry_{i-1}) carryi=(xi and