个人收集整理-ZQ 原码、反码与补码知识讲解 原码、反码与补码 在计算机内的数(称之为“机器数”)值有种表示法:原码、反码和补码。所谓原码就是带正、负号的二进制数,即最高位为符号位,“”表示正,“”表示负,其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加。由此可见,这三种表示法中,关键是负数的表示方式不一样。 正负数表示、定点数与浮点数 在计算机内,通常把个二进制数的最高位定义为符号位,用“”表示正数,“”表示负数;其余位表示数值。 规定小数点位置固定不变的数称为“定点数”;小数点的位置不固定,可以浮动的数称为“浮点数”。 原码 原码表示法是定点数的一种简单的表示法。用原码表示带符号二进制数时,符号位用表示正,表示负;数值位保持不变。原码表示法又称为符号数值表示法。b5E2R。b5E2R。 . 小数原码表示法 设有一数为,则原码表示可记作[]原(下标表示)。例如, + ; 原码表示数的范围与二进制位数有关。设二进制小数±…,则小数原码的定义如下: 例如:时, 根据以上公式可得[]原;-时,根据以上公式可得[]原 () 当用位二进制来表示小数原码时,其表示范围为:最大值为,其真值约为() ;最小值为,其真值约为()。根据定义,小数“”的原码可以表示成…或…。p1Ean。p1Ean。 . 整数原码表示法 整数原码的定义如下: 例如:时,根据以上公式可得[]原;-时,根据以上公式可得[]原() 当用位二进制来表示整数原码时,其表示范围为:最大值为,其真值为() ;最小值为,其真值为() 。同样,整数“”的原码也有两种形式,即…和…。DXDiT。DXDiT。 反码 用反码表示带符号的二进制数时,符号位与原码相同,即用表示正,用表示负;数值位与符号位相关,正数反码的数值位和真值的数值位相同;而负数反码的数值位是真值的数值位按位变反。RTCrp。RTCrp。 . 小数反码表示法 设二进制小数±…,则其反码定义为: 例如,时,根据以上公式可得[]反;当时,根据以上公式可得[]反。根据定义,小数“”的反码有两种表示形式,即…和…。5PCzV。5PCzV。 . 整数反码表示法 设二进制整数±…,则其反码定义为: 例如,时,根据以上公式可得[]反 ;当时,根据以上公式可得[]反 () ()() 同样,整数“”的反码也有两种形式,即…和…。jLBHr。jLBHr。 1 / 4 个人收集整理-ZQ 采用反码进行加、减运算时,无论进行两数相加还是两数相减,均可通过加法实现。加、减运算规则如下: []反 []反 [ ]反 []反 []反 []反 运算时,符号位和数值位一样参加运算,若符号位有进位产生,则应将进位丢掉后才得到正确结果。例如,若 , ,则采用补码求的运算如下:[]补[]补[]补 。即:[]补 。因符号位为,表示是负数,故 Zzz6Z。Zzz6Z。 模 “模”是指一个计量系统的计数范围。如时钟中的一个小时就是分钟,这个分钟就是“模”。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。表示位的计算机计量范围是~,模。即位二进制所能表示的无符号整数的范围:≤≤;位二进制所能表示的有符号整数的范围:≤≤;位二进制补码所能表示的数值范围为:-≤≤+-。dvzfv。dvzfv。 “模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。 对于计算机,模也就是相应位数寄存器所能表示的最大数再加。如位寄存器所能存储的数是,这样位寄存器的模就等于。rqyn1。rqyn1。 码、阶码与移码 . 码 编码将一个字节的个位拆分成高位和低位两个部分,也就是说一个字节能存储两个数字。所以的编码过程就是将数字压缩的过程,将两个字节的数字压缩成一个字节。反之,解码就是把一个字节的数字拆分为两个数字单独存放(大部分的处理都是按字节处理的)。Emxvx。Emxvx。 . 阶码 对于任意一个二进制数,可用 表示,其中为尾数,为阶码,为阶码的 底,、都用二进制数表示,表示的全部有效数字,指明小数点的位置。SixE2。SixE2。 运算时符号位和数值位一样参加运算。当符号位有进位时,应将进位加到运算结果的最低位,才能得到最后结果。 补码 用补码表示带符号的二进制数时,符号位与原码、反码相同,即用表示正,用表示负;数值位与符号位相关,正数补码的数值位与原码、反码相同。而负数补码的数值位是真值的数值位按位变反,并在最低位加。xHAQX。xHAQX。 .小数补码的定义 设二进制小数±…,则其补码定义为: 例如, 时,根据以上公式可得[]补 ; 时, 根据以上公式可得[]补 小数“”的补码只有一种表示形式,即…。 . 整数补码表示法 设二进制整数±…,则其补码定义为: 例如, 时,根据以上公式可得[]补 ; 时,根据以上公式可得[]补 。同样,整数“”的补码也只有一种表示形式,即…。采用补码进行加、减运算时,可以将加、减运算均通过加法实现,运算规则如下:[ ]补 []补 []补 [ ]补 []补 []补LDAYt。LDAYt。 2 / 4 个人收集整理-ZQ . 移码 浮点数的阶码表示指数大小,有正有负,为避开阶码的符号,对每个阶码都加上一个正的常数(称偏移常数),使能表示的所有阶码都为正整数,变成“偏移”了的阶码,又称“增码”。6ewMy。6ewMy。 二进制的运算 二进制的四则运算 二进制数与十进制一样,同样可以进行加、减、乘、除四则运算。其算法规则如下: 加运算:,,, 减运算:,,, 乘运算:*,*,*,* 除运算:二进制只有两个数(,) 具体的四则运算方法参见书本。 补码运算 补码的加法运算规则是: [+]补 [ ]补+[]补 该式表明,当有符号的两个数采用补码形式表示时,进行加法运算可以把符号位和数值位一起进行运算(若符号位有进位,则丢掉),结果为两数之和的补码形式。kavU4。kavU4。 例如用补码进行下列运算:(+)+(+);(+)+(-),最终的结果分别是[]补和[] 补。 补码的减法运算规则是: [-]补[]补+[-]补 该式表明,求[-]补可以用[]补与 [-]补相加来实现。 [-]补是对减数进行求负操作。一般称已知 []补求得 [-]补的过程叫变补或求负。已知[]补求[]补的规则是全部位(含符号位)按位取反后再加。y6v3A。y6v3A。 具体的补码计算步骤参见书中介绍。 二进制的逻辑运算 二进制的逻辑运算有“与”、“或”、“非”和“异或”四种。M2ub6。M2ub6。 . “与”运算() “与”运算又称逻辑乘,用符号“.”或“∧”来表示。运算规则如下: ∧ ∧ ∧ ∧ 即当两个参与运算的数的对应码位中有一个数为,则运算结果为,只有两码位对应的数都为结果才为。这与前面介绍的二进制乘法运算是一样的。0YujC。0YujC。 . “或”运算() “或”运算又称逻辑加,用符号“”或“∨”表示。运算规则如下: ∨ ∨ ∨ ∨ 即当两个参与运算数的相应码位只要有一个数为,则运算结果为,只有两码位对应的数均为,结果才为。如“”进行“非”运算后就得到“”,对比相应位即可验证以上运算规则了。eUts8。eUts8。 . “非”运算() “非”运算实现逻辑否定,即进行求反运算,非运算规则: , 。注意“非”运算只是针对一个数所进行的“运算”,这与前面的“与”和“或”运算不一样。它的实3 / 4 个人收集整理-ZQ 质意义就是取反。如“”进行“非”运算后就得到“”,对比相应位即可验证以上运算规则了。sQsAE。sQsAE。 . “异或”运算() “异或”运算用符号“⊕”来表示。其运算规则如下:⊕ ; ⊕ ; ⊕ ; ⊕ 。即当两个参与运算的数取值相异时,运算结果为,否则为。下面两图是两个二进制数异或运算过程。GMsIa。GMsIa。 4 / 4