位运算实现加减乘除

16次阅读
没有评论

共计 644 个字符,预计需要花费 2 分钟才能阅读完成。

计算机只认识 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

计算机只会做加法。

正文完
post-qrcode
 0
三毛
版权声明:本站原创文章,由 三毛 于2023-11-29发表,共计644字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)