【一起来学C语言】常用进制的转换与应用(上)
【前言】
一提数制,我脑海里就浮现出学二进制时的“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)其它
如果十进制想转十六进制,可以先把十进制转为二进制,再转十六进制。