返回

原码,反码,补码的浅浅解析

发布时间:2022-09-19 03:34:23 416
# 数据

采用补码的形式储存,在谈到补码的时候,我觉得有必要谈谈原码,反码,和补码这三个概念

所谓的原码是计算机储存数据的一种形式,由符号位,数值位组成,在计数的时候采用二进制,整数的符号位和数值位用“,”隔开,小数的符号位和数值位用“."隔开,我们以四位的机器为例子

如表示+3   “0,011”  

那么问题来了,-3 怎么表示呢 用”1,011“表示吗

这就引出了后面反码和补码的概念

反码通常是用来由原码求补码或者由补码求原码的过渡码

反码跟原码是正数时,一样;负数时,反码就是原码符号位除外,其他位按位取反

按位取反大概意思就是:用计数系统所能表示的最大数减去一个数就能得到它的反(二进制计数系统的最大值为1)

大家先记住这三条,比如100取反就是在每一位用1减去该位所在的数字 就是011

比如+3的反码就是 

 

 

接下来就是讨论补码的时间了,先看一个例子,如果我们单纯用符号位去表示正负,那么会出现怎样的加减情况?

表示-3 用 1011 那么理论上3+(-3)=0  化为二进制就是 0011+1011=1110,1110无论如何解释,都无法将它和0扯上关系  如果我们用补码的话 先求正原码的反码,再在反码的基础上加一(这是求补码的操作)

比如求-3的补码 先写出3的原码011 求反码 100 再加1  101 然后添加符号位 即 用”1,101“来表示-3

这一下再算  很显然 1作为符号位,取后四位,结果就是0 注意这里说的1并不是真的就是补码的符号位,接下来就仔细听我狡辩

 

我在这里举一个网络上都举烂的例子

一个十二进制的时钟(大家可以看一看自己的手表) 顺时针走俩小时和逆时针走十小时的效果其实是一样的

也就是说-2 和+10 的效果是一样的 我们称-2 和+10互为补码 在一定的情况下 +10可以代替-2进行运算,在这就不举例子了,也就是说,在计算机当中,我们用加法的运算表示了减法的运算,在这里不得不赞叹一下前人的指挥。

话说到这里,大家是不是明白了,我求负数的补码,求出来实际上是一个正数,既然是正数,还区分啥符号位,不就是在最前面再加一个0吗,其运算效果也是一样的嘛(小声的狡辩)

咱就是说 补码的最高位能起到符号位的作用,但并不是真正的符号位,实际上是一个数值位,算的时候还是可以当作数值位计算的

 

 

 

 

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
#C语言实现三子棋#22/9/12#五# 2022-09-19 03:23:51