位运算实现加减乘除

教程 · 2023-11-29 · 286 人浏览

计算机只认识 0 和 1,不懂数学的加减乘除(计算机只会与、或、非、异或),是不会直接运算的,那计算机是怎么操作的?

加法

比如计算 4 + 5 = ?

# 计算机是不会直接加的
  0000 0100
+ 0000 0101
-----------
  0000 1001

# 计算机实现原理
# 第一步:异或(不考虑进位)
  0000 0100
  0000 0101
-----------
  0000 0001

# 第二步:与运算(判断进位,如果与运算结果为0,则没有进位)
  0000 0100
  0000 0101
-----------
  0000 0100

# 第三步:将与运算结果,左移一位
  0000 1000

# 第四步:和第一步结果,异或
  0000 0001
  0000 1000
-----------
  0000 1001

# 第五步:对第四步进行与运算(判断进位,如果与运算结果为0,则没有进位)
  0000 0001
  0000 1000
-----------
  0000 0000

# 最终结果就是与运算为0的结果的上一个异或运算

减法

4 - 5 = ?

# 4 + (-5) = -1
  0000 0100
+ 1111 1011
-----------
  1111 1111

# 计算机实现原理
# 第一步:异或(不考虑进位)
  0000 0100
  1111 1011
-----------
  1111 1111

# 第二步:与运算(判断进位,如果与运算结果为0,则没有进位)
  0000 0100
  1111 1011
-----------
  0000 0000

# 最终结果:1111 1111 即 -1

乘除

乘:x*y,就是y个x相加,还是加法

除:x/y,本质是减法,即x能减去多少个y

计算机只会做加法。

Theme Jasmine by Kent Liao