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

  • 相关阅读:
    leetcode 375. Guess Number Higher or Lower II
    leetcode 374. Guess Number Higher or Lower
    转 PHP中exec、system等函数调用linux命令问题
    转 PHP 使用 Redis
    转 Vim操作
    转 php simple test
    转 手把手教你最简单的开源项目托管GitHub入门教程
    Bootstrap开启模态框后对数据处理(标记模态框的开启与关闭状态)
    java必会的英语单词
    Service和Servlet的区别
  • 原文地址:https://www.cnblogs.com/fenggwsx/p/15313866.html
Copyright © 2011-2022 走看看