补码

作者: sortinnauto | 来源:发表于2018-06-14 15:48 被阅读1次

计算机中用补码来表示负数。
以Java语言为例,int类型为32位4字节。

  • 怎么求补码?

正数的补码为其本身;负数的补码为对负数绝对值的二进制表示取反加一。

  • 补码的好处

在Java中,int类型可以表示232个数,范围为-231 ~ 231-1。如果不用补码直接用二进制表示的话,最高位应为符号位,那么表示范围为-(231-1) ~ 231-1,这之中会有+0和-0两种0的存在,且在算术运算中,直接表示会出现错误。而负数使用补码表示则可以避免这两种情况。如:

16+(-8)=?

下面仅写出二进制的后8位
直接表示:

                                     0001 0000
                                 +   1000 1000
                       _______________________________________
                                     1001 1000

很显然,结果为负数,是不正确的。

正数直接表示,负数用补码表示:

                                     0001 0000
                                 +   1111 1000
                       _______________________________________
                                    10000 1000

我们发现结果为9位,如果补齐我们省略的那些位,就会发现结果为33位,对于int型来说,最高的第33位为溢出位,机器会自动舍去。最终我们得到的结果为0000 1000,为正确答案。

相关文章

  • 汇编

    补码 在求补码 得真值

  • 关于补码_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/zhjyeftx.html