zoukankan      html  css  js  c++  java
  • 原码、反码、补码、移码

    机器数:一个数在计算机中的二进制表示形式, 叫做这个数的机器数。
    真    值:将带符号位的机器数对应的真正数值称为机器数的真值。
    在计算机的存储中,机器数是带符号的,通常用最高位表示符号位,1表示负数,0表示正数.

    例如:机器字长8位. 十进制的数5 表示成二进制为00000101.  -5则表示成10000101.    10000101 不表示133

    原码:+|x|  或者  -|x|      (就是符号位0/1 加上真值的绝对值)
    例如:
    +1 的原码:0000 0001
    -1  的原码:1000 0001

    8位二进制表示的范围是:[1111 1111, 0111 1111] 即 [-127, +127].


    反码:正数的反码=原码,负数的反码=符号位不变+其余每一位按位取反。

    例如:
    +1 的原码:0000 0001   +1 的反码:0000 0001
    -1  的原码:1000 0001   -1  的反码:1111 1110

    8位二进制表示的范围是 [1111 1111, 0111 1111] 即 [-127, +127].

    补码:正数的补码=原码,负数的补码=反码+1

    例如:

    +1 的原码:0000 0001   +1 的反码:0000 0001    +1 的补码:0000 0001
    -1  的原码:1000 0001   -1  的反码:1111 1110    -1  的补码:1111 1111

    8位二进制表示的范围是 [0111 1111, 1000 000] 即 [-128, +127].


    移码:不管正负,只要将其补码的符号位取反即可。

    例如:

    +1 的原码:0000 0001   +1 的反码:0000 0001    +1 的补码:0000 0001   +1 的移码:1000 0001
    -1  的原码:1000 0001     -1  的反码:1111 1110      -1  的补码:1111 1111    -1   的移码:0111 1111
     

    总结:

    计算机中负数存储的方式是补码,由于正数的补码是它本身,所以可认为计算机内存储的是补码.

                       正数                                  负数
          原码                  0 + |x|                                          1 + |x|
         反码                 0 + |x|         符号位不变,其余每一位按位取反
         补码               0 + |x|                               反码+1
         移码               1 + |x|                           补码的符号位取反
  • 相关阅读:
    行高 | line-height (Animations & Transitions)
    色域 | @media.color-gamut (Media Queries)
    自动换行 | word-wrap (Text)
    漫谈死锁
    《金融时间序列分析》第3版-蔡瑞胸
    《广告点击延时反馈建模》
    《Google软件测试之道》
    《持续集成:软件质量改进和风险降低之道》
    《DevOps实践:驭DevOps之力强化技术栈并优化IT运行》
    《架构真经:互联网技术架构的设计原则》
  • 原文地址:https://www.cnblogs.com/l20902/p/10610922.html
Copyright © 2011-2022 走看看