首页 > 编程知识 正文

原码补码移码表示范围,原码补码移码转换器

时间:2023-05-04 22:11:59 阅读:220539 作者:714


  定点数的编码有:原码、补码、移码、反码(用得少)

原码

  原码就是用最高位来表示符号,符号位用0与1来表示正负,剩下的数表示数值。对于4位二进制数的原码表示方法中,0即可以用1000表示,也可以用0000表示。用原码表示数值的缺点是:0的表示并不唯一,不利于编程。同时,对原码执行加减操作不方便。
  原码通常用来表示定点小数,用来表示浮点数的尾数。

  顺便提一手反码: 反码是相对于原码而言的,如果是非负数,反码==原码;如果是负数,那就是符号位不变,数值位按位取反,0变成1,1变成0。

补码

  补码的概念离不开模。一个数的补码是多少,只有在确定了模值是多少后才能确定。一个数的补码,就是对一个特定的模值取模。补码主要是为了实现计算机中对加减运算的统一,因为:

结论1:一个负数的补码等于模减该负数的绝对值。
结论2:对于某一确定的模,某数减去小于模的另一数,总可以用该数加上另一数负数的补码来代替。

  所有计算机都用补码来表示带符号整数。

怎样求补码?

结论一:0的补码唯一,00…0(n个0)。

结论二:正数的补码就是它本身。

结论三:一个负数的补码等于将对应正数补码各位取反、末位加一。(其正数从右向左遇到第一个1的前面各位取反

结论四:补码的定义 假定补码有n位,则:[X]补= 2n + X (- 2n-1 ≤ X<2n-1 ,mod 2n) X是真值,[x]补是机器数。

一些特殊数的补码:

[-2n-1]补= 2n - 2n-1 = 10…0(n-1个0)(mod 2n)

[-1]补= 2n - 0…01 = 11…1(n个1) (mod 2n)

[0]补= 0…0 (n个0)

举例:假设机器数为4位,-8的补码:

求补码规律1:补码 = (模 - 绝对值)
[-8]补=16 - 8 = 8 = 1000

求补码规律2:(从右向左遇到第一个1的前面各位取反。记住,这只适用于负数,因为对于非负数(包括0),它们的原码 == 反码 == 补码)
[-8]补= [1000] -----》 1000

怎样根据补码求真值?

简便求法:

如果符号位为0,则为正数,数值部分相同如果符号为位1,则为负数,数值各位取反,末位加1(从右向左遇到第一个1的前面各位取反)

例如:[-3]补= 1101(4位) -----》 1011(原码,真值)

移码

  移码就是将每一个数值加上一个偏置常数( Excess / bias)。通常,当编码位数为n时,bias取 2n-1 或 2n-1-1(如 IEEE 754)。

  移码主要是用来表示定点整数,用于表示浮点数的阶(指数)。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。