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

    原码

    原码由第一位的符号位和后面的数值位构成,如32位二进制中:

    数值 原码
    (1) (0000 0000 0000 0000 0000 0000 0000 0001)
    (-1) (1000 0000 0000 0000 0000 0000 0000 0001)
    (2147483647) (0111 1111 1111 1111 1111 1111 1111 1111)
    (-2147483647) (1111 1111 1111 1111 1111 1111 1111 1111)
    (0) (0000 0000 0000 0000 0000 0000 0000 0000)
    (1000 0000 0000 0000 0000 0000 0000 0000)

    所以32位二进制用原码表示的范围是 ([-2147483647, 2147483647]),其中 (0) 有两种表示方法,因为 (0) 是不分正负的

    反码

    正数的反码是其原码本身,负数的反码是符号位不变,数值位的每一位都取反,如32位二进制中:

    数值 反码
    (1) (0000 0000 0000 0000 0000 0000 0000 0001)
    (-1) (1111 1111 1111 1111 1111 1111 1111 1110)
    (2147483647) (0111 1111 1111 1111 1111 1111 1111 1111)
    (-2147483647) (1000 0000 0000 0000 0000 0000 0000 0000)
    (0) (0000 0000 0000 0000 0000 0000 0000 0000)
    (1111 1111 1111 1111 1111 1111 1111 1111)

    所以32位二进制用反码表示的范围是 ([-2147483647, 2147483647]),其中 (0) 有两种表示方法

    补码

    正数的补码是其原码本身,负数的补码是其反码加 (1),如32位二进制中:

    数值 反码
    (1) (0000 0000 0000 0000 0000 0000 0000 0001)
    (-1) (1111 1111 1111 1111 1111 1111 1111 1111)
    (2147483647) (0111 1111 1111 1111 1111 1111 1111 1111)
    (-2147483647) (1000 0000 0000 0000 0000 0000 0000 0001)
    (0) (0000 0000 0000 0000 0000 0000 0000 0000)
    (-2147483648) (1000 0000 0000 0000 0000 0000 0000 0000)

    所以32位二进制用反码表示的范围是 ([-2147483648, 2147483647]),其中 (0) 只有一种表示方法

  • 相关阅读:
    加关注
    UI设计
    敏捷开发
    java书箱
    怎么优化JAVA程序的执行效率和性能?
    sql访注入
    Matlab中plot函数全功能解析
    matlab分割背景与物体
    ssh免密码登录
    c++字符串详解(转)
  • 原文地址:https://www.cnblogs.com/fenggwsx/p/15313866.html
Copyright © 2011-2022 走看看