美文网首页
负数的二进制表示方法

负数的二进制表示方法

作者: 子喻爱吃黄焖鸡 | 来源:发表于2017-08-30 15:05 被阅读0次

假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
现在想知道,-5在计算机中如何表示?
 
在计算机中,负数以其正值的补码形式表达
什么叫补码呢?这得从原码,反码说起。
 
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如 00000000 00000000 00000000 00000101 是 5的 原码。
 
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。
称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。
反码是相互的,所以也可称:
11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。
 
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。
再举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:00000000 00000000 00000000 00000001
2、得反码: 11111111 11111111 11111111 11111110
3、得补码: 11111111 11111111 11111111 11111111
可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF

相关文章

  • 知识点收集

    负数的二进制表示方法二、八、十、十六进制转换按位取反

  • 负数的二进制表示方法

    假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为:00000000 00000000 000...

  • 负数的二进制表示方法

    负数的二进制表示方法 假设有一个 int 类型的数,值为3,那么,我们知道它在计算机中表示为: 00000000 ...

  • 负数的二进制表示方法

    负数表示不是简单地将最高位变为1,比如: 1)byte a=-1,如果只是将最高位变为1,二进制应该是100000...

  • 二进制中1的个数

    题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。2中方法:

  • 剑指offer编程题—二进制中1的个数

    题目描述 输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。 解题思路 思路一:暴力方法 方法...

  • java位移操作

    十进制、二进制 十进制数在计算机中的表示方法,对于正数和负数是不一样的。负数:绝对值对应的二进制,取反码,将反码加...

  • Java 二进制

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

  • java数据结构和算法(10)二进制中1的个数

    输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。完成如下代码: 思路:方法1:使用Integer....

  • Day7——进制/原码反码补码/位运算

    一、进制 二、原码反码补码 原码:(符号位+真值)符号位:最高位用0表示正数,1表示负数真值:去掉正负数字的二进制...

网友评论

      本文标题:负数的二进制表示方法

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