机器数.原码 反码 补码比较理解

计算机中的数据实际上是一串二进制串,仅包含数字0和数字1。人们对于数字的直观理解来源其十进制数,对于为人们所熟悉的十进制的数来说,其加减乘除运算规则十分简洁且易于计算,正负数之间的运算法则也有其特定的方式,对于一个学过数学的人来说可谓手到擒来……但对于计算机来说,它并没有人类智慧的大脑,它甚至无法数出超过1的数字,它只认识数字0和数字1。因此,在计算机的世界里,人类社会中的很多规则是行不通的……
综述,要以灵活的思维去理解思考机器码,不能把十进制的规则往二进制上硬搬。在理解各种机器码时,要理解其产生的原因,有什么样的作用。当你理解了这套机器界的法则时,小小的01串能给你创造出无限的东西。这就相当于一个智商按指数增长的人,其增长的恐怖速度可见一斑,且上不封顶。

  1. 原码:

按照人们对于十进制的理解,直接转化为二进制后,即为原码。

特点:有符号位;+0和-0原码二进制表示不同

缺点:在计算负数加法时,结果出现错误。
如:13+(-14)=-1
13的二进制为:00001101
-14的二进制为:10001110
相加得:10011011 该数十进制为:-27
显然,结果出现错误。

  1. 反码

意识到原码的错误后,在引入补码之前,先引入了反码进行过渡。

特点:有符号位,+0和-0二进制表示不同。

表示:原码非符号位按位取反。

  1. 补码

补码的出现很好的解决了负数加法的问题,补码由同余引入。
思考钟表问题:12h为一圈。倘若现在是9点,问该进行怎样的操作才能到达1点。两种方案:1.时针顺时针旋转4个单位到达一点. 2.时针逆时针旋转8个单位到达1点.
即9+4=1或者9-8=1.
什么?9+4=1?连小学生都知道这是错误的,但是在引入同余这个概念后就很好理解了,钟表的一圈相当于一个周期(9+4)%12=1。13和1模12同余……
依次类推12和0同余、11和-1同余、10和-2同余……
不难发现,上面自然而然的引入了负数,因此对负数做加减操作,相当于对该负数同余的数做运算。补码正是基于这样的一种思维产生的,化负为正。

特点:有符号位;+0和-0的机器码一样(见下篇)

补码的出现,很好的解决了原码的问题。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辽宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值