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

    原码:二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

    反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

    补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

    例:

    [+7]反= 0 0000111 B                               [+0]反=00000000B
    [-7]反= 1 1111000 B                                [- 0]反=11111111B
    [-7]补= 1 1111001 B                                [ 0 ] 补=00000000B (仅此一个)
     
    (1) 已知原码,求补码。
    负数 :原码——(符号位不变,数值部分按位求反;得反码,再在其反码的末位加1。)—— 补码
    2) 已知补码,求原码。
    负数 :符号位不变,先取反后加1 ( 或者是先减1后取反)。
        但是需要注意 [1000 0000]补 = =-128,如果按照上面的运算 [1000 0000]补 = [0000 0000]这个是不正确的。
          如果是 8bit, 用补码可以表示的范围是 -128 ~ 127 补码可以多保存一个最小值。
     
    个人理解:就像是一个128个刻度的表盘(0-127个数字即[000 0000]-[111 1111]),正转到127=[111 1111] 表示正数127,当转到128的时候归零了。
         在负数里面就是反转一个刻度表示-1 ,反转到-127 = [000 0001],当再反转一个格到[000 0000]的时候这个128给了负数
                  也就是0 占用了+128 的位置。
              所以8bit 的补码表示范围是 -128 ~ 127 之间。
     
     
     
    本文为复制粘贴的结果,非原创。)——要是我创的别人也不用啊,哈哈
  • 相关阅读:
    Leetcode 191.位1的个数 By Python
    反向传播的推导
    Leetcode 268.缺失数字 By Python
    Leetcode 326.3的幂 By Python
    Leetcode 28.实现strStr() By Python
    Leetcode 7.反转整数 By Python
    Leetcode 125.验证回文串 By Python
    Leetcode 1.两数之和 By Python
    Hdoj 1008.Elevator 题解
    TZOJ 车辆拥挤相互往里走
  • 原文地址:https://www.cnblogs.com/sepeng/p/2993987.html
Copyright © 2011-2022 走看看