分类: LINUX
2010-03-10 11:05:01
1.数值按权展开:
规律如下(比较简单):
136.1=1*10E2+3*10E1+6*10E0+1*10E-1
101.01B=1*2E2+0*2E1+1*2E0+0*2E-1 +1*2E-2
2cH=2*16E1+c*16E0=44
//B表示2进制,H表示16进制
//E科学记数 即次方后接次方数 16E1 就是 16的1次方
1除二取余(整数部分),乘二取整(小数部分)
除二取余:把十进制整数除以2得到商和余数,在将所得到的商除以2,又得到新的商和余数,这样不断的用二去除商,直到商为0为止.
每次除的的余数便是相应的二进制数码.最先得到的是最的有效位,最后得到的是最高有效位.
如:11的二进制
11/2=5--1
5/2=2--1
2/2=1--0
1/2=0--1
//是整除,即二进制位 1011(从后面开始往上读,高位低位的问题)
乘二取整:
对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.
如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位
如:0.25的二进制
0.25*2=0.5
0.5*2=1
即0.25的二进制为 0.01 ( 第一次所得到为最高位,最后一次得到为最低位)
方法和转二进制相同,也可以用这种方法转换到其他进制.
如 90.875 转换到16进制
90/16=5--10
5/16=0--5
整数部分就是 5A(10进制的10 对16进制的A)
0.875*16=14
小数部分就是 E(10进制的14 对16进制的E)
用二进制数编码,存在这样一个规律:n位二进制数最多能表示2的n次方种状态.因此,诺用一组二进制数表示具有十六种状态的十六进制数,至少要4位(16=2的4次方).同样八位要 3位.
如:将111101010011.10111B转换为16进制
从小数点开始,分别向左右4位一组划分,不足4位的补0,然后将每组4位的二进制数以1位的十六进制数取代即可.
1111 0101 0011 . 1011 1000
2 A F . C 5 (二进制对应的16进制数)
其他进制间的转换一样的方法..自己把握要点.
上面列举的方法是我觉得比较简单的方法,关于其他一些方法请自行参考相关书籍.如有错误请指正.