• 原码 反码 补码 概念 原理 详解


    参考:https://www.cnblogs.com/baiqiantao/p/7442907.html

    讲的很清楚,吸收到的知识点:

    1. 机器使用补码,可以将符号位和数值位统一处理,同时,将减法转化为加法来计算;
    2. 使用补码不仅仅修复了0的符号以及存在两个编码的问题,而且还能够多表示一个最低数,这就是为什么8位二进制使用原码或反码表示的范围为 [-127, +127],而使用补码表示的范围为 [-128, 127] 的原因。
    3.  [1000_0000] 就代表-128。
      注意,-128并没有原码和反码表示。
    4.  

       补码运算使用的是“同余”的规律——两个整数a、b,若它们除以整数m所得的余数相等,则称a,b对于模m同余

     解惑

    疑问

    一下是博客中的原文,标红的地方我一直不明白,后来发现博客上面有  负数取模的计算  公式

    接下来回到二进制的问题上,看一下:2-1=1的问题。
    2-1=2+(-1) = [0000 0010]原 + [1000 0001]原= [0000 0010]反 + [1111 1110]反
    先到这一步,-1的反码表示是1111 1110,如果这里将[1111 1110]认为是原码,则[1111 1110] = -126,这里将符号位除去,即认为是126。
    发现有如下规律:
    (-1) mod 127 = 126          (看下面解答)
    126 mod 127 = 126 
    即:
    (-1) ≡ 126 (mod 127)
    2-1 ≡ 2+126 (mod 127)
    2-1 与 2+126的余数结果是相同的!而这个余数,正式我们的期望的计算结果:2-1=1

    解惑:利用  负数取模的计算  公式

    负数取模的计算

    正数进行mod运算是很简单的,但是负数呢?
    下面是关于mod运算的数学定义:
    上面是截图,下面是使用"["和"]"替换上图的"取下界"符号:
    x mod y = x - y [ x / y ]
     
    上面公式的意思是:
    x mod y 等于 x 减去 y 乘上 x与y的商的下界
    以 -3 mod 2 举例:
     
    -3 mod 2
    = -3 - 2*[-3/2] 
    = -3 - 2*[-1.5] 
    = -3 - 2*(-2)
    = -3 + 2 
    = 1
     
    所以:
     (上面不懂的地方,就清楚了)
    (-1) mod 127 
    = -1 - 127*[-1/127]
    = -1 - 127*[-0.0078...]
    = -1 - 127*(-1)
    = -1 + 127
    = 126
  • 相关阅读:
    项目原型设计
    项目选题报告 (基于云的胜利冲锋队)
    基于云的胜利冲锋队 团队团队展示
    团队作业第三次-项目原型设计
    团队作业第二次-项目选题报告
    团队作业第一次-团队团队展示
    周测、代码
    异常
    5.13重点
    接口
  • 原文地址:https://www.cnblogs.com/tingtingzhou/p/10734504.html
Copyright © 2020-2023  润新知