美文网首页
[Record] 二进制负数的表示与移位

[Record] 二进制负数的表示与移位

作者: simplehych | 来源:发表于2020-04-11 11:46 被阅读0次

计算机在整数编码上采用 补码 的方式

基于 8 位系统分析,以 正数1 和 负数 -1 为例

示例 原码 反码 补码
正数 1 0000 0001 0000 0001 0000 0001
负数 -1 1000 0001 1111 1110 1111 1111

最高位表示符号位:0 正数 / 1 负数

正数:原码、反码、补码相同
负数:原码最高位符号位,反码 在原码基础上除符号位外取反,补码 在反码的基础上+1

求负数的补码
十进制推二进制:该负数的绝对值,取反再+1

以 -1 为例

  1. -1 的绝对值 1 -> 0000 0001
  2. 取反 +1 -> 1111 1110 + 1 = 1111 1111

二进制推十进制:正数原码补码一样,负数取反+1,再添加正负。
以 1111 1111 为例

  1. 高位是1 明确是负数
  2. 取反 + 1 -> 0000 0000 + 1 = 0000 0001
  3. 添加符号 1000 0001 = -1

为什么计算机采用补码?而不采用有逻辑的原码?
以计算 1+ (-1) 为例:
原码计算: 0000 0001 + 1000 0001 = 1000 0010 = -2
补码计算: 0000 0001 + 1111 1111 = 0000 0000 = 0 (最高位溢出,相当于丢弃),完美解决为题,故为了运算方便,舍弃了逻辑性。

  • 以 -128 为例
    最高位符号位
    127 原码 0111 1111
    -128 原码 无
    -128 反码 无
    -128 反码 1111 1111 (1111 1111(反码) + 1 = 1000 0000,这里实际上真正相加的是1111 1111后面的7位,第1位是符号位始终不会变,所以,当进到第8位的时候,溢出舍弃)

扩展资料:

byte类型的取值范围:有符号的[-128,127] 无符号的[0,255]

对于有符号的数据类型来说:最高位为符号位 0 为正数,1为负数

二进制数的补码

  1. 求二进制数的补数,目的是往计算机里面存放。

  2. 在计算机里面,存放的数字什么的,都称为机器码;那么二进制形式的补数,也就改称为补码了。

  3. 一般情况下,都是以 8 位二进制数来讨论补码,少数也有用 16 位数的。

  4. 计算时加上正数,是不需要进行求7a686964616fe78988e69d8331333366303830取补数的;只有进行减法(或者加上负数),才需要对减数求补数。

  5. 计算结果如果超出了-128~+127的范围,结果将是错误的,这是没有办法纠正的。

  6. 应用补码进行计算,完全符合前面介绍的“用补数可把减法转换成加法”的做法,只要忽略进位(这个进位1,就是求补的时候,加进去的1 0000 0000中的1),结果就是正确的。

  7. 求取补码,就按照定义的规定,负数采用“模减去绝对值”的方法来求,这是求补数的通用方法,适合于各种进制、各种大小的数字。

  8. 不要用求反加一的方法,也就不用理会原码和反码了,也不牵涉符号位的问题。

相关文章

  • [Record] 二进制负数的表示与移位

    计算机在整数编码上采用 补码 的方式 基于 8 位系统分析,以 正数1 和 负数 -1 为例 示例原码反码补码正数...

  • 位运算:负数右移与无符号右移运算小结

    该作者讲述的很详细。 对于带符号右移,若为负数,则在存储时首位表示符号位,其值为1,表示该值是负数的移位,在移位过...

  • Java 二进制

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

  • 位运算

    题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 分析:考虑将该整数和二进制1进行与运算,...

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

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

  • java二进制表示形式与移位操作符

    1.java二进制表示形式 2.移位操作符1.左移位操作符(<<)2.“有符号”右移位操作符(>>)3.“无符号”...

  • 二进制位运算---左移(<<)右移(>>

    (1).二进制中负数的计算 负数以正数的补码表示 原码:一个整数按照绝对值的大小转化成二进制的数 反码:将二进制数...

  • 二进制负数

    二进制负数 由原码的补码表示 原码:正数-数字的绝对值转换为二进制负数-数字的绝对值转换为二进制后最高位补1例:5...

  • 计算机基础之二进制(20190131)

    计算机基础之二进制(20190131) 1. 基本常识 2. 负数二进制表示

  • 负数的二进制表示

    在二进制里,最高位为符号位,用0和1 来表示正负,最高位为 1 代表负数,最高位为 0 代表正数。 负数的二进制表...

网友评论

      本文标题:[Record] 二进制负数的表示与移位

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