zoukankan      html  css  js  c++  java
  • 计算机系统--补码,原码及反码

    无符号数的编码

      假设有一个w位的无符号整数,我们可以将位向量写成[xw-1 , xw-2 , … , x2 , x1 , x0]。其中每个xi都取值为0或1,我们用一个函数B2Uw(Binary to unsigned,长度为w)来表示:

      

      函数B2U将一个长度为w的0、1串映射到非负整数:

      

      对于一个无符号编码的数,由 w 位的二进制序列构成,那么它的最小值,即所有位都为 0 ,用位向量表示即:000......000。

        UMinw = 0

      最大值即所有位都为 1,即:111......111

         UMaxw = 2w - 1 

    补码编码 

      对于许多应用,我们还希望表示负数值,最常见的有符号数的计算机表示方式就是补码,在补码中,最高有效位为符号位

      我们用B2Tw来(Binary to Two's-conplement,长度为w)来表示:

      

      

       当最高位为1,其余为全部是 0 的时候,即 1000......000,表示补码格式的最小值:

        TMinw = -2w-1 

          当最高位为 0,其余为全部是 1 时,即 0111......111,表示补码格式的最大值:

        TMaxw = 2w-1-1

     反码和原码

      反码:除了最高有效位的权是-(2w-1-1),而不是-2w-1其余的和补码表示方式一样

        

      原码:最高有效位是符号位,用来确定剩下的位是取负还是正

       

      无符号数补码 = 原码取反 + 1

      有符号数补码 = 除符号位原码取反 + 1

      对于负整数,原码和补码互相转换的简便方法:从数的右边往左开始数,遇到“0”不理它,直到遇到第一个“1”为止,以后的每一位数取反即是它的原码或补码,符号位不变,还是“1”(补码的补码是原码)。

    参考 :https://www.cnblogs.com/ysocean/p/7531660.html

  • 相关阅读:
    Diffbot:开发者工具 将web内容转换成应用
    算法之道—形而之上谓之道
    css三个ppt
    SMB的NTLM认证过程与NTLM挑战的编程实现
    c++计算圆周率
    SVN总结
    struts2技术实现用户名唯一的验证处理详解
    数字常量
    二叉树的创建和遍历
    php变量的定义和作用域
  • 原文地址:https://www.cnblogs.com/zzdbullet/p/9617506.html
Copyright © 2011-2022 走看看