进制之间的相互转换
通常计算机中的信息分为两类:一类是计算机的处理对象,泛称为数据;另一类是计算机执行的指令,即程序。
计算机内部的电子部件通常只有“导通”和“截止”两种状态,所以计算机信息中只有 0 和 1 两种状态即可。由于二进制中只有 0 和 1 两个数码,所以人们在计算机中使用二进制。由于人们习惯于使用十进制,对二进制不熟悉,在一些设计中还需要用到其他的进制,这样就存在了进制之间的转换问题,现在和大家说说进制的转换:
十进制有0—1,两个数码,逢二进位。
十进制有0—7,八个数码,逢八进位。
十进制有0—9,十个数码,逢十进位
十进制有0—9和A,B,C,D,E,F,十六个数码,其中A—F(a—f)表示10—15。
计算机中为了区分不同的进制有两种方式
第一种:
B(Binary) 表示二进制 如1011B
O(Octonary) 表示八进制 如237O
D(Decimal) 表示十进制 如319D
H(Hexadecimal) 表示十六进制 如6B1E8H
第二种:
(1011)2下标为2表示二进制
(467)8下标为8表示八进制
(891)10下标为10表示十进制
(5D8A)16下标为16表示十六进制
1:其他进制转换为十进制
(198.06)10 = 1*102 + 9*101 + 8*100 + 0*10-1 + 6*10-2
这里,10称为十进制的基数,102、101、100、10-1叫做十进制各位数的 “权”数,1、9、8、0、6叫做十进制的“系数”,这种展开方式称为按权相加。
一般的可以把任何一种数制的展开形式 表示为下面的形式:
N=dn*rn-1+dn-1*rn-2+···+d1*r0+d-1*r-1+···+d-m*r-m
其中,d为系数,r为基数,n、m为正整数(分别代表整数位和小数)。
只要按照按权相加的方法就可以把其他进制转化为十进制。
例如:(11001.1001)2
(11001.1001)2
= 1*24 + 1*23 + 0*22 + 0*21 + 1*20 + 1*2-1 + 0*2-2 + 0*2-3 + 1*2-4
= 16 + 8 + 4 + 1 + 0.5 + 0.625
= (25.5625)10
所以 (11001.1001)2 = (25.5625)10
2:十进制转换为其他进制
任何两个有理数如果相等,那这两个的整数部分和小数部分一定会分别相等。因此在进行各种数制间相互转换的时候,可以吧帧数部分和小数部分分开进行转换。十进制的整数部分转换为其他其他进制的整数。
所以 (21)10 = (10101)2
十转换为其他进制时就是反复除以转换进制的奇数r,每次除后的商做为被除数,余数作为装换后进制一个数码第一个余数作为第一位,从低到高依次进行。
小数例如:(0.78125)10
小数乘二 乘积的小数部分 乘积的整数部分
0.78125*2 0.56250 1
0.5625*2 0.125 1
0.125*2 0.25 0
0.25*2 0.5 0
0.5*2 0.0 1
所以(0.78125)10 = (0.11001)2
例如(21.78125)10
因为:(21)10 = (10101)2 ,(0.78125)10 = (0.11001)2
所以:(21.78125)10 = (10101.11001)2
十进制转换为二进制、八进制和十六进制的原理均相同,转换时整数部分和小数部分分别进行转换后进行相加,其他进制转化为十进制的方法相同的。