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) 只有一种表示方法

  • 相关阅读:
    commons-lang3工具类学习(三)
    commons-lang3工具类学习(二)
    commons-lang3工具类学习(一)
    Spring之ClassPathResource加载资源文件
    Spring详解(十)加载配置文件
    java IO流总结
    Spring自定义注解配置切面实现日志记录
    使用@Cacheable 踩过的坑
    将BufferedImage转换为InputStream,亲测可用
    计算两个日期之间间隔的天数
  • 原文地址:https://www.cnblogs.com/fenggwsx/p/15313866.html
Copyright © 2011-2022 走看看