1.2.1 数制与转换
1.数制
数制是数的表示及计算的方法。数值数据是有大小的,人们习惯采用的是十进制。但在计算机内,各种信息都是以二进制代码形式表示的,这是因为采用二进制表示信息物理器件容易实现,并且二进制数据运算简单,可靠性高、能用性强。在设计研究计算机时常采用八进制、十六进制。
(1)十进制计数制
基数:10。
数码:0、1、2、3、4、5、6、7、8、9。
位权:以10为底的幂。
进位规则:逢十进一。
十进制是人们最习惯使用的一种进位计数制。
(2)二进制计数制
基数:2。
数码:0、1。
位权:以2为底的幂。
进位规则:逢二进一。
二进制是计算机中最常用数制。
(3)八进制计数制
基数:8。
数码:0、1、2、3、4、5、6、7。
位权:以8为底的幂。
进位规则:逢八进一。
(4)十六进制计数制
基数:16
数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
位权:以16为底的幂。
进位规则:逢十六进一。
在计算机中,通常用数字后面跟一个英文字母表示该数进位计数制。十进制数一般用D(Decimal)或d、二进制用B(Binary)或b、八进制用O(Octal)或o、十六进制数用H(Hexadecimal)或h。
2.转换
人们习惯采用十进制数,计算机采用的是二进制数,书写时又多采用八进制数或十六进制数,因此,必然产生各种进位计数制之间的相互转换问题。
(1)任意进制数(用R表示)转换为十进制数
位权相加法:把R进制数每位上的权数与该位上的数码相乘,然后求和即得要转换的十进制数。即:
【例1.2.1-1】将二进制数10111转换成十进制数。
(10111)2=1×24+0×23+1×22+1×21+1×20=16+0+4+2+1=(23)10
【例1.2.1-2】将八进制数127转换成十进制数。
(127)8=1×82+2×81+7×80=64+16+7=(87)10
【例1.2.1-3】将十六进制数15B转换成十进数。
(15B)16=1×162+5×161+11×160=256+80+11=(347)10
(2)十进制数转换为R进制数
转换方法:将十进制转换成R进制时,需对整数部分和小数部分进行分别处理。
①整数部分连续除以R,其余数的序列就是对应的进位计数制的整数部分。
②小数部分连续乘以R,取其整数构成的序列就是对应的进位计数的小数部分。
【例1.2.1-4】将十进制数44.125转换成二进制数。
转换结果:(44.125)10=(101100.001)2
【例1.2.1-5】将十进制数44.125转换成八进制数。
转换结果:(44.125)10=(54.1)8
【例1.2.1-6】将十进制数44.125转换成十六进制数。
转换结果:(44.125)10=(2C.2)16
(3)二进制与八进制、十六进制数之间的转换
大家知道,23=8、24=16,也就是说,1个八进制位等于3个二进制位,1个十六进制位等于4个二进制位。因此,很容易实现二进制与八进制、十六进制之间的转换。
①二进制转换成八进制或十六进制。
转换方法:从小数点开始,向左或向右每3位或4位二进制数分成一组(不足位数,整数部分高位补0,小数部分低位补0),然后按对应位置写出每组二进制数等值的八进制数或十六进制数。
【例1.2.1-7】将二进制数10011010110转换成八进制数。
转换结果:(10011010110)2=(2326)8
【例1.2.1-8】将二进制数1001.1010110转换成十六进制数。
转换结果:(1001.1010110)2=(9.AC)16
②八进制或十六进转换成制二进制。
转换方法:将每位八进制或十六进制数用3位或4位二进制数代替即可,小数点不动。
【例1.2.1-9】将八进制数7153转换成二进制数。
转换结果:(7153)8=(111001101011)16
【例1.2.1-10】将十六进制数9A28转换成二进制数。
转换结果:(9A28)16=(1001101000101000)2
(4)八进制与十六进制数之间的转换
八进制与十六进制数之间不能直接转换,它们之间可通过二进制间接来实现转换。
【例1.2.1-11】将八进制数476转换成十六进制数。
(476)8=(100111110)2=(13E)16
【例1.2.1-12】将十六进制数3C45转换成八进制数。
(3C45)16=(0011110001000101)2=(36105)8
各种进制数对照表如表1.2.1所示。
表1.2.1 各种进制数对照表