十进制数
进位计数制是一种计数的方法,习惯上最常用的是十进制计数法。十进制数的每位数可以用下列10个数码之一来表示:0、1、2、3、4、5、6、7、8、9。十进制数的基数为10,基数表示进位制所具有的数码的个数。
十进制数的计数规则是“逢十进一”,也就是说,每位累计不能超过9,计满10就应向高位进1
(N)10=(an-1an-2…a1a0a-1a-2…a-m)10
(N)10=an-1*10n-1+an-2*10n-2+…+a1*101+a0*100+a-1*10-1+a-2*10-2+…+a-m*10-m
1.2.2二进制数、把进制数和十六进制数
计算机中为了便于存储及计算的物理实现,采用了二进制。二进制数的基数为2,只有0、1两个数码,其计数规则是“逢二进一”,即每位计满2就向高位进1.它的各位的权是以2i表示的。
(N)2=(an-1an-2…a1a0a-1a-2…a-m)2
(N)2=an-1*2n-1+an-2*2n-2+…+a1*21+a0*20+a-1*2-1+a-2*2-2+…+a-m*2-m
把进制数的基数是8,采用的数码是0、1、2、3、4、5、6、7。把进制数的计数规则是“逢八进一”,它的各位的权是以8i表示的。通常,对八进制数的表示,可以在数字的右下角标注8或O,但在C语言中是在数的前面加数字O表示。
把进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、A、B、C、
D、E、F。其中A、B、C、D、E、F分别表示十进制数数字10、11、12、13、14、15。十六进制的计数规则是“逢十六进一”,它的各位的权是以16i表示的。通常,对十六进制的数的表示,可以在数字的右下角标注16或H,但在C语言中是在数的面前加数字0和字母X即0X来表示。
由此得出:十进制、八进制、二进制与十六进制的特征对照表如表所示:
进制 |
数码 |
计数规则 |
数的表示法 |
十进制 |
0~9 |
逢十进一 |
(1234)10 |
二进制 |
0、1 |
逢二进一 |
(101)2 |
八进制 |
0~7 |
逢八进一 |
(3467)8 |
十六进制 |
0~9、A~F |
逢十六进一 |
(46AF)16 |
<一>二进制数和十进制数的转换
1. 二进制转换为十进制数
例如:
(11101.01)2=1*24+1*23+1*22+0*21+1*20+0*2-1+1*2-2=16+8+4+0+1+0+0.25=(29.25)10
2. 十进制转换为二进制数
(1)整数部分转换
把要转换的十进制数的整数部分不断除以基数2,并记下余数,直到商为0为止。
(N)10=(123)10
123/2=61 (a0=1) 最低整数位
61/2=30 (a1=1)
30/2=15 (a2=0)
15/2=7 (a3=1)
7/2=3 (a4=1)
3/2=1 (a5=1)
1/2=0 (a6=1) 最高整数位
(N)10=(1111011)2
(2)小数部分转换
(N)10=(0.468)10
<二>二进制数、八进制数和十六进制数的转换
(2)小数部分转换
对于被转换的十进制数的小数部分则应不断乘以基数2,并记下其整数部分,直到结果的小数部分为0为止。
(N)10=(0.945)10
(N)10=(0.8125)10
0.8125*2=1.625 (b1=1) 最高小数位
0.625*2=1.25 (b2=1)
0.25*2=0.5 (b3=0)
0.5*2=1.0 (b4=1) 最低小数位
(N)10=(0.1101)2
在十进制的小数部分转换中,有时连续乘以2不一定能使小数部分等于0,这说明该十进制小数不能用有限位二进制小数表示。这时,只要取足够多的位数,使其误差达到所要求的精度就可以了。
(N)10=(123)10
123/8=15 (a0=3) 最低整数位
15/8=1 (a1=7)
1/8=0 (a2=1) 最高整数位
(N)10=(165)8
(N)10=(0.8125)8
0.8125*8=6.5 (b1=6)最高小数位
0.5*8=4.0 (b2=4)最低小数位
(N)10=(0.64)8
二进制数、八进制数和十六进制数的转换
八进制数的基数是8(8=23),十六进制数的基数是16(16=24)。二进制数、八进制数和十六进制数之间具有2的整指数倍的关系,因而可直接进行转换。
1.二进制数-->八进制数
从小数点开始,分别向左右按3位分组转换成对应的八进制数字字符,最后不满3位的,则需补0
具体方法为:
二进制数: 001 101 101 . 101 010
八进制数: 1 5 5 5 2
(001101101.101010)2=(155.52)8
八进制数-->二进制数
将每位八进制数用3位二进制数表示即可。
将八进制数(345.64)8转换成二进制数
具体方法为:
八进制数: 3 4 5 . 6 4
二进制数: 011 100 101 110 100
(345.64)8=(11100101.1101)2
3.二进制数-->十六进制数
从小数点开始,分别向左、右按4位分组转换成对应的十六进制数字字符,最后不满4位的,则需补0.
将二进制数(1101101.10101)2转换成十六进制数
具体方法为:
二进制数:0110 1101 . 1010 1000
十六进制数: 6 D A 8
(1101101.10101)2=(6D.A8)16
4.十六进制数-->二进制数
将每位十六进制数用4二进制数表示即可。
将十六进制数(A8D.6C)16 转换成二进制数。
具体方法:
十六进制数: A 8 D . 6 C
二进制数: 1010 1000 1101 0110 1100
(A8D.6C)16=(101010001101.011011)2
其实,BCD编码在中国大陆称之为“8421码”,用8421码二进制数与八进制数、十进制数、十六进制数相互转换。