美文网首页
【深入浅出-JVM】(2):原码、反码、补码

【深入浅出-JVM】(2):原码、反码、补码

作者: mousycoder | 来源:发表于2019-07-15 14:55 被阅读0次

计算机中有补码表示 0

0 为正数
原码 00000000 00000000 00000000 00000000
反码 00000000 00000000 00000000 00000000 正数反码等于原码
补码 00000000 00000000 00000000 00000000 正数补码等于原码

0 为负数
原码 10000000 00000000 00000000 00000000
反码 11111111 11111111 11111111 11111111 负数反码等于原码符号位不变,其余取反
补码 00000000 00000000 00000000 00000000 负数补码等于反码+1

用补码
1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原
用反码
1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0

数值 原码 反码 补码
+0 0000 0000 0000 0000 0000 0000
-0 1000 0000 1111 1111 0000 0000

补码、原码、反码转换

负数原码转补码,最高位不变,其余取反,然后 +1
10000001
11111110
11111111
负数补码转原码,最高位不变,其余取反,然后+1 补码->反码->原码->反码->补码 ,(二进制数,先-1再取反和先取反后+1,结果一样)
11111111
10000000
10000001

负数反码转原码
符号位不变,其余取反
11111111
10000000

区别:

  1. 8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].
    补码可以多表示一个范围,其实是利用补码 10000000 的原码是 = -128
  2. 原码最大的问题就是 一个数加上他的相反数不等于 0
  3. 已知补码,求原码的负数的补码:符号位和数值位都取反,末位再加1

补码

常用概念

  • 左移
    左移的规则只记住一点:丢弃最高位(符号位),0补最低位
  • 右移
    左边空出的位用0或者1填补。正数用0填补,负数用1填补。注:不同的环境填补方式可能不同;
    低位右移溢出则舍弃该位。
  • 无符号右移
    左边空出的位用0填补,低位右移溢出则舍弃该位。

感谢您的耐心阅读,如果您发现文章中有一些没表述清楚的,或者是不对的地方,请给我留言,您的鼓励是作者写作最大的动力。

作 者 : @mousycoder

原文出处 : http://mousycoder.com/thinking-in-jvm/2/

相关文章

  • 软件测评师做题技巧

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

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

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

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

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

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

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

  • 补码

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

  • 命题-第一章-简答

    写出十进制数-2的原码、补码、反码 【解析】 注意:1.计算机运算是以补码的形式进行的2.正数的原码、反码、补码都...

  • 【计算机】我的收藏文章索引

    索引表 索引标题链接摘要原码、反码、补码《原码、反码、补码,详解》http://www.cnblogs.com/z...

  • [计基]-二进制之补码

    一.基础名词 原码 : 0011 反码 :0011(原码) >> 1100(反码) (原码按位取反) 补码 :00...

  • 技术问 - 原码、反码、补码

    什么是原码、反码、补码:

  • 位运算

    1.原码、反码、 补码正数的原码、反码、 补码都一样 正数以原码存储在计算机负数 以补码存储在计算机 例...

网友评论

      本文标题:【深入浅出-JVM】(2):原码、反码、补码

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