补码

作者: 再帅就满分了 | 来源:发表于2020-06-13 13:39 被阅读0次

突然想到计算机数字在内存中的存储方式,都知道正数在计算机中存储的是原码,负数在计算机中存储的是补码, 一时懵逼为什么负整数要存补码一番梳理之后又重新理解了,温故而知新!

首先整理三个概念:

原码:

1的原码是:00000000 00000000 00000000 00000001
5的原码是:00000000 00000000 00000000 00000101

反码:
正数的反码与原码相同,负整数的反码为对该数的原码除符号位外取反

-1的原码是: 10000000 00000000 00000000 00000001
-1的反码是: 11111111 11111111 11111111 11111110

补码:
正数的补码与原码相同;
负数的补码为: 反码 + 1

-1的反码是:               11111111 11111111 11111111 11111110
-1的补码 = -1反码 + 1  =  11111111 11111111 11111111 11111111

重点:
为什么正整数用原码 ,负数用补码 ? 我们知道CPU只有累加器但是没有累减器。但是又要计算减法运算怎么办呢? 简单: 5 - 5 = 5 + (-5) 反应到二进制上

5  =  00000000 00000000 00000000 00000101
-5 =  10000000 00000000 00000000 00000101
所以 5 + (-5) = 0 = 10000000 00000000 00000000 00001010

等等 ~ 好像不对啊 应该是 000000000 00000000 00000000 00000000 才对怎么等于 -10了??

所以负数不能直接用原码!!!

任何正数 A - A = 0但是计算机中只能用A + (-A)的形式去做减法运算 ;
以上面的 5为例 5 - 5 = 5 + (-5) = 0

       5的原码是:   00000000 00000000 00000000 00000101
      -5的原码是:   10000000 00000000 00000000 00000101
      -5的反码是:   11111111 11111111 11111111 11111010
5的原码 + -5的反码 = 11111111 11111111 11111111 11111111 

所以可以反推任何正数A
A的原码加-A的反码都等于: 11111111 11111111 11111111 11111111
A的原码 + -A的反码 + 1 = 000000000 00000000 00000000 00000000 刚好等于0 结果正确
-A的反码 + 1 刚好是补码 所以负数在计算机中是以补码存储的

扩展:
5-2 可以理解 3 + 2 + (- 2) = 3的原码 + 2的原码 + (-2)的补码 = 3
同理验证
-2 - 2 = (-2) + (-2)也是可以的。

相关文章

  • 汇编

    补码 在求补码 得真值

  • 关于补码_2019-03-29

    整数的补码正数的补码正数的补码等于源码负数的补码负数的补码:源码中符号位保持不变,其余各位取反后再加1 小数小数的...

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

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

  • 原码,反码,补码杂谈

    本文从原码讲起。通过简述原码,反码和补码存在的作用,加深对补码的认识。力争让你对补码的概念不再局限于:负数的补码等...

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

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

  • Java中的非运算~

    涉及到的概念:原码、补码涉及到的公式: (1)正数的原码 = 补码;(2)负数的 补码 = ( 原码 - 1 )再...

  • 数值是以补码表示的

    正数的补码与原补码相同 负数的补码:将该数的绝对值的二进制数按位取反后再加1 例如:求-10的补码 10的原码: ...

  • int数字的表示

    在计算机中int型数字使用补码的形式在存储。首先说明补码的计算方式。正数和零的补码就是他们本身。负数的补码是符号位...

  • 补码

    原码、反码、补码 原码:符号位 反码:减法变加法 补码:+1解决-0问题 数学原理 同余 反码:mod127 补码...

  • 6-三码合一&位运算

    1.原/反/补码! 数据在计算机内部是以补码的形式储存的对于正数:反码====补码====原码。对于负数:反码==...

网友评论

      本文标题:补码

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