十六进制,十进制,八进制,二进制转换(含小数部分)

提示:各类进制在实际中表示

十进制:D(Decimal)

二进制:B(Binary)

八进制:O(Octal)  

十六进制:H(Hexadecimal)

如:(4B1)16又可写为4B1H

      (12345)8又可以写为12345O

      (10011)2又可以写为10011B


1、非十进制与十进制的转换

1.1、基本原则:

按权展开法,即把各数位乘权的i次方后相加


1.2、实例:

例1:二进制与十进制的转换,带小数部分

01011010.01B=0×2^7+1×2^6+0×2^5+1×2^4+1×2^3+0×2^2  +1×2^1+0×2^0+0×2^-1+1×2^-2 = 90.25

例2:八进制与十进制的转换,如有小数部分,对应乘相应8的-i次方【字母O,表示八进制】

245O = 3x8^2+4x8^1+5x8^0 = 229

例3:十六进制与十进制的转换,如有小数部分,对应乘相应16的-i次方【字母H,表示十六进制】

F2DH = 15x16^2+2x16^1+13x16^0 = 3885


2、十进制与非十进制的转换

2.1、基本原则:

原则1:整数部分与小数部分分别转换;

原则2:整数部分采用除基数(转换为2进制则每次除2,转换为8进制每次除8,以此类推)取余法,直到商为0,而余数作为转换的结果,第一次除后的余数为最低为,最后一次的余数为最高位;

原则3:小数部分采用乘基数(转换为2进制则每次乘2,转换为8进制每次乘8,以此类推)取整法,直至乘积为整数或达到控制精度。

2.2、实例:

例1:将十进制数725.625分别转换为十六进制、八进制、二进制

转换为二进制,整数部分每次除2,小数部分每次乘以2:

                        整数部分:                                 小数部分:
                2 |725…………..余数=1         最低位           0.625                              
                2 |362…………..余数=0                            ×       2
                2 |181…………..余数=1                                1.250…..整数=1          小数部分最高位,靠近点的那位   
                  2 |90……..……余数=0                                 0.250
                  2 |45…………..余数=1                                ×       2
                  2 |22…………..余数=0                               0.500…..整数=0                  
                  2 |11…………..余数=1                                 ×       2
                    2 |5…………..余数=1                                  1.000…..整数=1          小数部分最低位,最远点的那位  
                    2 |2…………..余数=0                                 0.000
                    2 |1……… …..余数=1        最高位                        >                                    
                       0¨商为0,转换结束                               积为0,转换结束
转换结果为:725.625D=1011010101.101B

3、二进制、八进制、十六进制之间的转换

3.1、基本原则:

原则1:将二进制转换成八进制按3位一组进行;
原则2:将二进制转换成十六进制按4位一组进行;
原则3:分组时如位数不够,整数部分在最左边补0,小数部分在最右边补0;
原则4:八进制转二进制,将1位八进制转换为3位二进制;
原则5:十六进制转二进制,将1位十六进制转换为4位二进制。

3.2、实例:

例1:将1011001.1101011分别转换为八进制,十六进制
1011001.1101011 =   00 1  011  001. 110  101  1 00  = 131.654O           
1011001.1101011 =  0 101  1001. 1101  011 0  = 59.d6H    

例2:将八进制数3571.402O转换为二进制
3571.402O = 110 011 101 111 001.100 000 010B    

例3:将十六进制数91a28.b71H转换为二进制
91a28.b71H = 1001 0001 1010 0010 1000.1011 0111 0001B

你可能感兴趣的:(C语言编程)