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

  • 相关阅读:
    C++中虚函数
    ES6入门四:对象字面量扩展与字符串模板字面量
    ES6入门三:解构
    ES6入门二:默认值与默认值表达式
    ES6入门一:块级作用域(let&const)、spread展开、rest收集
    JavaScript严格模式
    JavaScript中with不推荐使用,为什么总是出现在面试题中?
    ES6入门一:ES6简介及Babel转码器
    HTML5之websocket
    HTML5之fileReader异步读取文件及文件切片读取
  • 原文地址:https://www.cnblogs.com/fenggwsx/p/15313866.html
Copyright © 2011-2022 走看看