美文网首页面试
二进制-----原码、反码、补码

二进制-----原码、反码、补码

作者: yyg | 来源:发表于2018-03-05 15:58 被阅读2次

作者:知乎用户
链接:https://www.zhihu.com/question/20159860/answer/71256667
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

数字在自然界中抽象出来的时候,一棵树,两只猪,是没有正数和负数的概念的,
计算机保存最原始的数字,也是没有正和负的数字,叫没符号数字,如果我们在内存分配4位(bit)去存放无符号数字,是下面这样子的

image

后来在生活中为了表示“欠别人钱”这个概念,就从无符号数中,划分出了“正数”和“负数”,正如上帝一挥手,从混沌中划分了“白天”与“黑夜”,为了表示正与负,人们发明了"原码",把生活应该有的正负概念,原原本本的表示出来

把左边第一位腾出位置,存放符号,正用0来表示,负用1来表示

但使用“原码”储存的方式,方便了看的人类,却苦了计算机

image

我们希望 (+1)和(-1)相加是0,但计算机只能算出0001+1001=1010 (-2)

这不是我们想要的结果 (╯' - ')╯︵ ┻━┻

另外一个问题,这里有一个(+0)和(-0)

为了解决“正负相加等于0”的问题,在“原码”的基础上,人们发明了“反码”

“反码”表示方式是用来处理负数的,符号位置不变,其余位置相反

image

当“原码”变成“反码”时,完美的解决了“正负相加等于0”的问题

过去的(+1)和(-1)相加,变成了0001+1101=1111,刚好反码表示方式中,1111象征-0

人们总是进益求精,历史遗留下来的问题—— 有两个零存在,+0 和 -0
我们希望只有一个0,所以发明了"补码",同样是针对"负数"做处理的。

"补码"的意思是,从原来"反码"的基础上,补充一个新的代码,(+1)

我们的目标是,没有蛀牙(-0)

image

有得必有失,在补一位1的时候,要丢掉最高位

我们要处理"反码"中的"-0",当1111再补上一个1之后,变成了10000(逢二进一),丢掉最高位就是0000,刚好和左边正数的0,完美融合掉了。这样就解决了+0和-0同时存在的问题。

另外"正负数相加等于0"的问题,同样得到满足

举例,3和(-3)相加,0011 + 1101 =10000,丢掉最高位,就是0000(0)

同样有失必有得,我们失去了(-0) , 收获了(-8)

以上就是"补码"的存在方式

相关文章

  • 二进制原码、反码、补码运算及标志位

    一、二进制原码、反码、补码的转换 原码: 正整数的原码:这个数的二进制,符号位为0;正整数的原码=补码=反码 例1...

  • python中的原码反码和补码

    python中的原码反码和补码 原码反码和补码的概念 原码:原码是二进制数字的一种简单的表示法。二进制首位为符号位...

  • 原码、反码、补码

    正数 原码:一个数的二进制 反码:正数的反码就是其原码 补码:正数的补码就是其原码 例 负数 原码:一个数的二进制...

  • 位运算

    原码,反码,补码 原码 正数的原码就是其二进制本身 负数的原码是把对应的正数的原码最高位改为1 反码 正数的反码就...

  • 软件测评师做题技巧

    第一类补码,反码,原码 正数:原码=反码;补码=原码负数:反码=原码求反;补码=反码+1 第二类用例概率的计算 测...

  • Java 二进制

    原码、反码、补码 二进制的最高位是符号位, 0表示正数, 1表示负数; 正数的原码, 反码, 补码都一样; 负数的...

  • 原码、反码、补码和移码

    书中关于原码、反码、补码和移码的定义如下(n是机器字长):原码: 反码: 补码: 移码: 原码, 反码, 补码的基...

  • 《Oracle Java SE编程指南》07-09:原码、反码和

    内容导航: 前言 1、原码 2、反码 3、补码 前言 原码、反码和补码是计算机存储一个具体数字的二进制编码方式。 ...

  • 2018-10-22 Python31 原码、反码、补码

    原码、反码、补码 1)如何计算补码?规则: 正数:原码 = 反码 = 补码负数:反码 = 符号位不变,其他位取反补...

  • 计算机为什么要使用原码、反码、补码

    1. 什么是原码、反码、补码 先看一个例子: +1和-1的原码、反码、补码的表示 原码、反码、补码的计算方式如下:...

网友评论

    本文标题:二进制-----原码、反码、补码

    本文链接:https://www.haomeiwen.com/subject/zfehfftx.html