计算机中数的表示

Author: 梁贞学 Date: 1994-01-14

        电子计算机处理的信息,都是仅用“0”与“1”两个简单数字表示的信息,或者是用这种数字进行了编码的信息。这种数制叫做二进制。要了解计算机,首先要了解计算机中数的表示方法。
        任何一种数制都可以用以下四个规则来描述:
        基数规则;进位规则;位权规则,运算规则。这了区别不同数制表示的数,通常用右括另外的下标字母表示括号内的数制,十进制数用D表示,二进制用B表示,十六进制数用H表示。
        二进制
        用四个规则描述如下:二进制数只有“0”和“1”两个数字,基数是2,最大的数字是1,逢2进位,各位的权为以2为底的幂。例如,(0101101010)各位的权自至在依次为27、26、25、24、23、22、21、20。
        二进制数的算术四则运算规则,除进、借位外与十进制数相同。
        ■二进制加法规则
        0+0=0   1+0=1
        0+1=1   1+1=10
        ■二进制减法规则
        0-0=0   0-1=1-借位
        1-0=1   1-1=0
        ■二进制乘法规则
        0×0=0   1×0=0
        0×1=0   1×1=1
        例四:二进制数11110 101=110
        110
        101)11110
        -)101
        
        101
        -) 101
        
        00
        二进制的优点是:
        ■二进制只有“0”和“1”两数字,很容易表示。电压的高和低、 晶体管的截止与饱和、磁性材料的磁化方向等都可以表示为“0”和“1”两种状态。
        ■二进制数的每一位只有0和1两状态,只需要两种设备就能表示, 所以二进制数节省设备。由于状态简单,所以抗干扰力强,可靠性高。
        二进制的主要缺点是数位太长,不便阅读和书写,人们也不习惯。为此常用八进制和十六进制作为二进制的缩写方式。为了适应人们的习惯,通常在计算机内都采用二进制数,输入和输出采用十进制数,由计算机自己完成二进帛与十进制之间的相互转换。
        0+1=1   1+1=10
        
        (二)十六进制与数制间的转换
        十六进制有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共十六个数字,其中A-F表示10-15的数字,基数是16,最大数字是15用F表示,逢16进位。
        十六进制数是二进制数的一种缩写方式,四位二进帛数有十六种组合,对应十进制数的0-15。二进制数转换为十六进制数的方法,从小数点开始左按四位分节,最高位和低位不足四位时,添0补足四位分节,然后用一个等值的十六进制数代换。反过来,十六进制转换成二进制的方法是:将每个十六进制数用4位二进制来书写,其最左侧或最右侧的可以省去。
        十进制数转换为二进制数,通常采基数乘除法。整数部分和小数部分分别转换,最后将两部分合起来,即为所转换的二进制数。
        整数部分转换用基数除法,即除以二进制数的基数2取余数,再将其商除以2取余数,重复这一过程直到商为0为止。第一次余数为二进制数的最低位,依次递增,最后一次余数为二进制数的最高位。
        小数部分转换用基数乘法,即乘以基数2取整数,将余下的小数再乘以2取整数,直到所需精度为止(小数部分的转换可能出现无限循环和无限不循环的情况)。第一次整数为二进制小数的第一位,依次递减,最后的整数为二进制小数的最低位。
        因为任何进制数的位权是用十进制数表示的,所以一个任何进制数都可以转化一个等价的十进制数?
        (三)数制间的转换
        ●如何把十进制数转化为二进制、八进制
        十进制数转换为二进制数规则:把十进制数用2一次次去除,直至商为0,将得到的余数从最后一次得到的余数依次读起即得,即“除2取余”。
        例如:将41变换为二进制
        1 0 1 0 0 1余
        0125102041
        即(41)D=(101001)B
        十进制转换为八进制规则:类似二进制,“除八取余”。
        例:41转换为八进制
        51余
        0541
        即41转换为八进制为51。
        ●如何把二进制、八进制转换为十进制
        二进制转化为十进制:(a1…an-1an)2
        =(a1×2^(n-1)+…+an×2^0)10
        八进制转化为十进制:(a1…an-1an)8
        =(a1×8^(n-1)+…+an-1×8^1+an×8^0)10
        例:(10001010)2=(1×2^7+0×2^6+0×2^5+0×2^4+1×2^3+0×2^2+1×2^1+0×2^0)10=(138)10
        (532)8=(5×8^2+3×8^1+2×8^0)10=(346)10
        ●如何使二进制、八进制相互转换
        二进制八进制规则:将十进制数从低位到高位分组,每三位一组,每组可代表0到7之间的数字,依次写下各组所代表的数字即得。
        例:(11001001)2=(011)(001)(001)
        3  1  1
        =(311)8
        八进制二进制规则:将每位八进制数码分别用三位二进制数表示,并在这个0和1构成的序列去掉无用的前导0即得。
        例:(5163)=(101)(001)(110)(011)=(101001110011)2