zoukankan      html  css  js  c++  java
  • 计算机中如何表示数字-05移码

    码在进行数值比较的时候比较麻烦,因为把补码的符号部分与数值部分统一看成数值的话,则负数补码的值大于正数补码的值。为了比较数值大小方便又提出了移码的概念。


    移码的定义:


    ü 纯小数:-1<=x<1,x移码=1+x;


    ü 纯整数:-2^(n-1)<=x<2^(n-1),x移码=2^(n-1)+x。


    根据移码的定义可知,移码是把真值在数轴上正向平移1(纯小数)或者2^(n-1)(纯整数)后得到的,所以移码也被称为增码或余码。移码的实质是把真值映像到一个正数域,因此移码的大小可以直观的反映真值的大小。这样采用移码表示时,不管真值的正负,均可以按无符号数比较大小。


    例4-1:补码与移码的关系:


    纯小数:


    ü 0<=x<1时,[x]补码=x,[x]移码=1+x=1+[x]补码;


    ü -1<=x<0时,[x]补码=2+x,[x]移码=1+x=1+[x]补码-2=[x]补码-1。


    纯整数:


    ü 0<=x<2^(n-1)时,[x]补码=x,[x]移码=2^(n-1)+x=2^(n-1)+[x]补码;


    ü -2^(n-1)<=x<0时,[x]补码=2^n+x,[x]移码=2^(n-1)+x=2^(n-1)+[x]补码-2^n


       =[x]补码-2^(n-1)


    综上,移码与补码数值部分相同,符号位相反,因此若已知[x]补码,只需将[x]补码的符号位取反,数值部分不变,即可得到[x]反码,反之亦然。
    注:补码的计算,一般计算可以根据定义,先求出增加后的真值,在将真值转换成无符号的二进制数。后面在介绍浮点数的时候我们还会接触到移127码,即将原值增加127,它的计算方法可以采用[[x]真值+127]无符号二进制数。如果已知了x的补码,我们也可以由补码与移码之间的关系直接求得。
    例4-2:求下列各数的补码和移码,1011010、-1011010。


    ü [1011010]补码=01011010  [1011010]移码=11011010


    ü [-1011010]补码=10100110  [-1011010]补码=00100110


    例4-3:真值0的反码表示、移码的表示范围。


    真值0的移码表示只有一种形式:[+0]移码=[-0]移码=100…0。无论是由移码的定义,还是由移码与补码的关系都可以证明。


    移码的表示范围与补码相同,纯小数的移码可以表示到真值-1,[-1]移码=0.00…0;纯整数的移码可以表示到真值-2^(n-1),[-2^(n-1)]移码=000…0。


    例4-4:设某计算机的字长为8位,求真值-73在各码制下的表现形式。


    真值=-73


    原码=11001001


    补码=10110111


    反码=10110110


    移码=00110111
  • 相关阅读:
    九度oj题目1019:简单计算器
    九度oj题目1555:重复子串
    Java泛型
    Remove Duplicates from Sorted Array
    Add Binary
    Plus One
    Remove Element
    Remove Nth Node From End of List
    Longest Common Prefix
    Roman to Integer
  • 原文地址:https://www.cnblogs.com/xieji233/p/6155648.html
Copyright © 2011-2022 走看看