进制相互转化的算法公式

来源:互联网 发布:中国为什么网络扫黄 编辑:程序博客网 时间:2024/06/06 06:35

对于整数:有四种表现形式 

二进制:0,1 逢二进一
八进制:0-7 逢八进一,用0开头表示 
十进制:0-9 逢十进一
十六进制:0-9,A-F (A :10 B:11 递增)逢十六进一,0x表示

逢十进一:在生活中,0-9是一位数,9加一就是10(二位数)了,这就叫逢十进一、

逢二进一:1就是最大位,打过1就要进一位,例如:1+1=10 ,1+1+1=11。


进制转换

例如:进制数转十进制  1011.01

从小数点始,以0为开始数,小数点左面有四位 对应: 1,1,0,1;小数点右面有两位 对应:0,1。

如果1011.01是二进制的,

1011.01 = 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 + 0*2^-1 + 1*2^-2 = 11(十进制)其中 2为基数。

1*2^3 这里1代表 1011.01 中的 最高位(个十百千的位) ,2代表 要转化的进制,3是从小数点起往左计数从0开始,这里的最高位就是3

0*2^2 这里0代表 1011.01 中的 第二高位就是百位,2代表 要转化的进制,2是从小数点起往左计数从0开始,百位为2。

以此类推。

同理,如果1011是八进制的,那么 8为基数

1011 =1*8^3 + 0*8^2 + 1*8^1 + 1*8^0 = 521(十进制)。

ok,那么十进制如何转成二进制的?

以十进制的11.875为例 先取出整数 11

11/ 2 = 5 ... 1

5/2 = 2 ... 1

2/2 = 1 ... 0

1/2= 0 ...1

既 (11)10  = (1011)B

再取出小数 以0.875

0.875*2 = 1.75     1

0.75*2 = 1.5         1

0.5*2 = 1              1

既 (0.875)10  = (0.111)B

所以(11.875)10 = (1011.111)B

其中2为基数,进制转换只需要改变基数就行了。

原创粉丝点击