【一起来学C语言】常用进制的转换与应用(上)

来源:互联网 发布:知之者不如好之者的知 编辑:程序博客网 时间:2024/06/05 09:29

【前言】

       一提数制,我脑海里就浮现出学二进制时的“0”“1”,除了二进制,我们生活中常用的十进制,我们还了解过八进制和十六进制,那么你还记得它们几个之间如何转换么?
       本篇博客简介二进制、八进制、十进制、十六进制的相互转换和简单应用。希望能对读者有所帮助。

【常用进制】

       计算机中我们常用的进制有四种,分别是二进制、八进制、十进制和十六进制。
       二进制只有 “0”“1”两种编码符号,逢二进一。
       八进制只有  0-7八种编码符号,逢八进一,第一位是0作为八进制的一个标志。
       十进制有0-9 十种编码符号,逢十进一。
       十六进制有0-9 A-F 十六种编码符号,逢十六进一,前两位0X作为十六进制的一个标志。

【进制转换】

(1)十进制转二进制 :  除二,取余,倒排, 除到商为零的时候
       (25)10=(11001)2
                                              

(2) 二进制转十进制:按位乘权相加
举个例子:
(11001)2= (25)10 

                                          



(3)二进制转八进制:三位二进制压缩成一位八进制
       对比十进制位数,我们发现二进制码位太长了。我们需要一种码位较少,计算较快的进制来表示。八进制出场。
       转换方法口诀是:三位二进制压缩成一位八进制,三位三位的分解二进制,如果位数不够,就在最高位前加0补位,(最高位补0不会影响数值的大小)。

       二进制转八进制表

                                                            

举个例子:
(11001)2=(31)8 

过程:
11001,因为需要三位三位的分解二进制,11001是五位,所以需要最高位补一位0,变为011001。
011001 :对照上面的转换表,011 是对应八进制的 3, 001 对应 1,所以转为八进制为(31)8 。

(4)八进制转二进制  一位八进制展成三位二进制,最高位的0可省略

       八进制转二进制表

                                             

举个例子:
       (363)8= (011110011)2
       对照上面的转换表,八进制的3转换为二进制的011.6转化为110,3转化为011,最后二进制为011110011,最高位的0不影响数值大小,可以省略不写。

(5)二进制转十六进制:  四位二进制压成一位 十六进制,不够四位就在最前面补位。H代表十六进制

       当八进制还是速度不够快和位数还是微长的时候,我们又需要更快的数制了——十六进制。

                                                



举个例子:
对照上面的转换表  00101111 --- 2F   11111111 ——FF

(6)十六进制转二进制:一位十六进制展成四位二进制,最高位的0可以省略
    
举个例子:
(7aB1)16 =(?)2 
对照上面的转换表 
十六进制的7转化为二进制为0111,a转换为1010,B转化为1011,1转化为0001,所以最后的二进制为0111101010110001。

(7)其它
如果十进制想转十六进制,可以先把十进制转为二进制,再转十六进制。

【小结】

       本篇博客简介四种常见数制的转换,希望对你有所帮助,下篇博客会简介数制的应用,敬请期待。