您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 原码、反码与补码知识讲解
2.2原码、反码与补码在计算机内的数(称之为“机器数”)值有3种表示法:原码、反码和补码。所谓原码就是带正、负号的二进制数,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。由此可见,这三种表示法中,关键是负数的表示方式不一样。2.2.1正负数表示、定点数与浮点数在计算机内,通常把1个二进制数的最高位定义为符号位,用“0”表示正数,“1”表示负数;其余位表示数值。规定小数点位置固定不变的数称为“定点数”;小数点的位置不固定,可以浮动的数称为“浮点数”。2.2.2原码原码表示法是定点数的一种简单的表示法。用原码表示带符号二进制数时,符号位用0表示正,1表示负;数值位保持不变。原码表示法又称为符号-数值表示法。1.小数原码表示法设有一数为x,则原码表示可记作[x]原(下标表示)。例如,X1=+1010110;X2=-1001010原码表示数的范围与二进制位数有关。设二进制小数X=±0.X1X2…Xm,则小数原码的定义如下:例如:X=+0.1011时,根据以上公式可得[X]原=0.1011;X=-0.1011时,根据以上公式可得[X]原=1-(-0.1011)=1.1011=1.1011当用8位二进制来表示小数原码时,其表示范围为:最大值为0.1111111,其真值约为(0.99)10;最小值为1.1111111,其真值约为(-0.99)10。根据定义,小数“0”的原码可以表示成0.0…0或1.0…0。2.整数原码表示法整数原码的定义如下:例如:X=+1101时,根据以上公式可得[X]原=01101;X=-1101时,根据以上公式可得[X]原=24-(-1101)=10000+1101=11101当用8位二进制来表示整数原码时,其表示范围为:最大值为01111111,其真值为(127)10;最小值为11111111,其真值为(-127)10。同样,整数“0”的原码也有两种形式,即00…0和10…0。2.2.3反码用反码表示带符号的二进制数时,符号位与原码相同,即用0表示正,用1表示负;数值位与符号位相关,正数反码的数值位和真值的数值位相同;而负数反码的数值位是真值的数值位按位变反。1.小数反码表示法设二进制小数X=±0.x1x2…xm,则其反码定义为:例如,X=+0.1011时,根据以上公式可得[X]反=0.1011;当X=-0.1011时,根据以上公式可得[X]反=2-2-4+X=10.0000-0.0001-0.1011=1.0100。根据定义,小数“0”的反码有两种表示形式,即0.0…0和1.1…1。2.整数反码表示法设二进制整数X=±Xn-1Xn-2…X0,则其反码定义为:例如,X=+1001时,根据以上公式可得[X]反=01001;当X=-1001时,根据以上公式可得[X]反=(25-1)+X=(100000-1)+(-1001)=11111-1001=10110同样,整数“0”的反码也有两种形式,即00…0和11…1。采用反码进行加、减运算时,无论进行两数相加还是两数相减,均可通过加法实现。加、减运算规则如下:[X1+X2]反=[X1]反+[X2]反[X1-X2]反=[X1]反+[-X2]反运算时符号位和数值位一样参加运算。当符号位有进位时,应将进位加到运算结果的最低位,才能得到最后结果。2.2.4补码用补码表示带符号的二进制数时,符号位与原码、反码相同,即用0表示正,用1表示负;数值位与符号位相关,正数补码的数值位与原码、反码相同。而负数补码的数值位是真值的数值位按位变反,并在最低位加1。1.小数补码的定义设二进制小数X=±0.X-1X-2…X-m,则其补码定义为:例如,X=+0.1011时,根据以上公式可得[X]补=0.1011;X=-0.1011时,根据以上公式可得[X]补=2+X=10.0000-0.1011=1.0101小数“0”的补码只有一种表示形式,即0.0…0。2.整数补码表示法设二进制整数X=±Xn-1Xn-2…X0,则其补码定义为:例如,X=+1010时,根据以上公式可得[X]补=01010;X=-1010时,根据以上公式可得[X]补=25+X=100000-1010=10110。同样,整数“0”的补码也只有一种表示形式,即00…0。采用补码进行加、减运算时,可以将加、减运算均通过加法实现,运算规则如下:[X1+X2]补=[X1]补+[X2]补[X1-X2]补=[X1]补+[-X2]补运算时,符号位和数值位一样参加运算,若符号位有进位产生,则应将进位丢掉后才得到正确结果。例如,若X1=-1001,X2=+0011,则采用补码求X1-X2的运算如下:[X1-X2]补=[X1]补+[-X2]补=10111+11101。即:[X1-X2]补=10100。因符号位为1,表示是负数,故X1-X2=-11002.2.5模“模”是指一个计量系统的计数范围。如时钟中的一个小时就是60分钟,这个60分钟就是“模”。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。表示n位的计算机计量范围是0~2n-1,模=2n。即n位二进制所能表示的无符号整数的范围:0≤x≤2n-1;n位二进制所能表示的有符号整数的范围:-2n-1+1≤x≤2n-1-1;n位二进制补码所能表示的数值范围为:-2n-1≤X≤+2n-1-1。“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。对于计算机,模也就是相应位数寄存器所能表示的最大数再加1。如8位寄存器所能存储的数是11111111=255,这样8位寄存器的模就等于255+1=256。2.2.6BCD码、阶码与移码1.BCD码BCD编码将一个字节的8个位拆分成高4位和低4位两个部分,也就是说一个字节能存储两个数字。所以BCD的编码过程就是将数字压缩的过程,将两个字节的数字压缩成一个字节。反之,解码就是把一个字节的数字拆分为两个数字单独存放(大部分的处理都是按字节处理的)。2.阶码对于任意一个二进制数n,可用N=Sx2P表示,其中S为尾数,P为阶码,2为阶码的底,P、S都用二进制数表示,S表示N的全部有效数字,P指明小数点的位置。3.移码浮点数的阶码表示指数大小,有正有负,为避开阶码的符号,对每个阶码都加上一个正的常数(称偏移常数),使能表示的所有阶码都为正整数,变成“偏移”了的阶码,又称“增码”。2.3二进制的运算2.3.1二进制的四则运算二进制数与十进制一样,同样可以进行加、减、乘、除四则运算。其算法规则如下:加运算:0+0=0,0+1=1,1+0=1,1+1=10减运算:1-1=0,1-0=1,0-0=1,0-1=1乘运算:0*0=0,0*1=0,1*0=0,1*1=1除运算:二进制只有两个数(0,1)具体的四则运算方法参见书本。2.3.2补码运算补码的加法运算规则是:[X+Y]补=[X]补+[Y]补该式表明,当有符号的两个数采用补码形式表示时,进行加法运算可以把符号位和数值位一起进行运算(若符号位有进位,则丢掉),结果为两数之和的补码形式。例如用补码进行下列运算:(+33)+(+15);(+33)+(-15),最终的结果分别是[+48]补和[+18]补。补码的减法运算规则是:[X-Y]补=[X]补+[-Y]补该式表明,求[X-Y]补可以用[X]补与[-Y]补相加来实现。[-Y]补是对减数进行求负操作。一般称已知[Y]补求得[-Y]补的过程叫变补或求负。已知[+Y]补求[-Y]补的规则是全部位(含符号位)按位取反后再加1。具体的补码计算步骤参见书中介绍。2.3.3二进制的逻辑运算二进制的逻辑运算有“与”、“或”、“非”和“异或”四种。1.“与”运算(AND)“与”运算又称逻辑乘,用符号“.”或“∧”来表示。运算规则如下:0∧0=00∧1=01∧0=01∧1=1即当两个参与运算的数的对应码位中有一个数为0,则运算结果为0,只有两码位对应的数都为1结果才为1。这与前面介绍的二进制乘法运算是一样的。2.“或”运算(OR)“或”运算又称逻辑加,用符号“+”或“∨”表示。运算规则如下:0∨0=00∨1=11∨0=11∨1=1即当两个参与运算数的相应码位只要有一个数为1,则运算结果为1,只有两码位对应的数均为0,结果才为0。如“10111101”进行“非”运算后就得到“01000010”,对比相应位即可验证以上运算规则了。3.“非”运算(NOT)“非”运算实现逻辑否定,即进行求反运算,非运算规则:0=1,1=0。注意“非”运算只是针对一个数所进行的“运算”,这与前面的“与”和“或”运算不一样。它的实质意义就是取反。如“10111101”进行“非”运算后就得到“01000010”,对比相应位即可验证以上运算规则了。4.“异或”运算(XOR)“异或”运算用符号“⊕”来表示。其运算规则如下:0⊕0=0;0⊕1=1;1⊕0=1;1⊕1=0。即当两个参与运算的数取值相异时,运算结果为1,否则为0。下面两图是两个二进制数异或运算过程。
本文标题:原码、反码与补码知识讲解
链接地址:https://www.777doc.com/doc-3956716 .html