进制介绍以及相互转换

进制也就是进位计数制,是人为定义的带进位的计数方法 对于任何一种进制—X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

进制

  • 十进制
  • 二进制
  • 四进制
  • 七进制
  • 八进制
  • 十六进制

十进制

十进制编码几乎就是数值本身。

二进制

它由两个数码0,1组成,二进制数运算规律是逢二进一。

二进制乘法和加法基本运算法则:

0+0=0,0+1=1,1+0=1,1+1=10

0×0=0,0×1=0,1×0=0,1×1=1

四进制

四进制是以4为基数的进位制,以 0、1、2 和 3 四个数字表示任何实数。

十进制0-12之间的相互转换:

七进制

七进制是以7为基数的计数系统。使用数码0-6。

八进制

由于二进制数据的基数R较小,所以二进制数据的书写和阅读不方便,为此,在小型机中引入了八进制。八进制的基数R=8=2^3,有数码0、1、2、3、4、5、6、7,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。八进制用下标8或数据后面加O表示 例如:二进制数据 ( 11 101 010 . 010 110 100 )2 对应八进制数据 (352.264)8或352.264O。

十六进制

由于二进制数在使用中位数太长,不容易记忆,所以又提出了十六进制数。

十六进制数有两个基本特点:它由十六个数码:数字0~9加上字母A-F组成(它们分别表示十进制数10~15),十六进制数运算规律是逢十六进一,即基数R=16=2^4,通常在表示时用尾部标志H或下标16以示区别,在c语言中用添加前缀0x以表示十六进制数。

例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H。

进制转换

对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。

二进制数、十六进制数转换为十进制数(按权求和)

二进制数、十六进制数转换为十进制数的规律是相同的。把二进制数(或十六进制数)按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”.

例如:把(1001.01)2 二进制计算。

解:(1001.01)2</br>
=8*1+4*0+2*0+1*1+0*(1/2)+1*(1/4)</br>
=8+0+0+1+0+0.25</br>
=9.25

把(38A.11)16转换为十进制数

解:(38A.11)16

=3×16的2次方+8×16的1次方+10×16的0次方+1×16的-1次方+1×16的-2次方

=768+128+10+0.0625+0.0039

=906.0664

十进制数转换为二进制数,十六进制数(除2/16取余法)

整数转换.一个十进制整数转换为二进制整数通常采用除二取余法,即用2连续除十进制数,直到商为0,逆序排列余数即可得到――简称除二取余法.

例:将25转换为二进制数

解:25÷2=12 余数1

12÷2=6 余数0

6÷2=3 余数0

3÷2=1 余数1

1÷2=0 余数1
所以25=(11001)2

同理,把十进制数转换为十六进制数时,将基数2转换成16就可以了.

例:将25转换为十六进制数
解:25÷16=1 余数9

1÷16=0 余数1

所以25=(19)16

二进制数与十六进制数之间的转换

由于4位二进制数恰好有16个组合状态,即1位十六进制数与4位二进制数是一一对应的.所以,十六进制数与二进制数的转换是十分简单的.

(1)十六进制数转换成二进制数,只要将每一位十六进制数用对应的4位二进制数替代即可――简称位分四位.

例:将(4AF8B)16转换为二进制数.

解: 4 A F 8 B

0100 1010 1111 1000 1011

所以(4AF8B)16=(1001010111110001011)2

(2)二进制数转换为十六进制数,分别向左,向右每四位一组,依次写出每组4位二进制数所对应的十六进制数――简称四位合一位.

例:将二进制数(000111010110)2转换为十六进制数.

解: 0001 1101 0110

1 D 6

所以(111010110)2=(1D6)16

转换时注意最后一组不足4位时必须加0补齐4位

数制转换的一般化

1)R进制转换成十进制

任意R进制数据按权展开、相加即可得十进制数据。例如:N = 1101.0101B = 1*2^3+1*2^2+0*2^1+1*2^0+0*2^-1+1*2^-2+0*2^-3+1*2^-4 = 8+4+0+1+0+0.25+0+0.0625 = 13.3125</br>
N = 5A.8H = 5*16^1+A*16^0+8*16^-1 = 80+10+0.5 = 90.5

2)十进制转换R 进制

十进制数转换成R 进制数,须将整数部分和小数部分分别转换.

1.整数转换———除R 取余法 规则:(1)用R 去除给出的十进制数的整数部分,取其余数作为转换后的R 进制数据的整数部分最低位数字; (2)再用R去除所得的商,取其余数作为转换后的R 进制数据的高一位数字; (3)重复执行(2)操作,一直到商为0结束。

2.小数转换—————乘R 取整法 规则:(1)用R 去乘给出的十进制数的小数部分,取乘积的整数部分作为转换后R 进制小数点后第一位数字; (2)再用R 去乘上一步乘积的小数部分,然后取新乘积的整数部分作为转换后R 进制小数的低一位数字; (3)重复(2)操作,一直到乘积为0,或已得到要求精度数位为止。

3.小数转换——整数退位法:举例:0.321d转成二进制,由于321不是5的倍数,用取余法、取整法可能要算很久,这时候我们可以采用整数退位法。原理如下:

n为转成的二进制数的小数位数</br>
(x)10=(y)2</br>
(x)10*2^n=(y)2*2^n</br>
D=(x)10*2^n:计算10进制数,取整</br>
D→T转成2进制数</br>
(y)2=T/2^n=T*2^(-n),T退位,位数不足前端补零</br>
举例:</br>
0.321转成二进制数,保留7位</br>
0.321*2^7=41.088,取整数41</br>
41=32+8+1即100000+1000+1=101001</br>
退位,因只有6位而要求保留7位,所以是0.0101001

提炼至:百度百科

zxp wechat
欢迎关注微信公众号!