1.前言
二进制是计算机的语言,正如我们使用汉语表达与交流信息一样,任何信息在计算机中都以二进制的形式存储和计算。了解二进制与十进制等进制之间的转换方法,有助于我们了解计算机内部的数字计算过程,可以帮助我们在一定程度上理解信息在计算机中的编码和解码过程。本文先简单介绍位置化数字系统的概念,然后详细讲解二进制、八进制、十六进制、十进制之间的转换方法与原理。
2.位置化数字系统简介
在位置化数字系统中,数字中符号所占据的位置决定了其表示的值,我们日常使用的十进制就是一个位置化数字系统。
比如十进制数1234,符号“1”、“2”、“3”、“4”根据其所在位置的不同而具有不同的值,可以将其写成如下形式:
如果调换符号的位置,则数字的值也会随之改变,比如将十进制数1234写成4321,显而易见,这两个数分别代表不同的数值,4321写成位置化数字系统的形式如下:
在上述的例子中,相同的符号“4”,因为其位置的不同,其所代表的数值也不同,这就是位置化数字系统的基本概念,即符号本身并不能代表一个准确的数值,需要根据符号在数字中的位置来判断其所代表的数值大小。
在位置化数字系统中,有几个简单的概念,分别是符号集,基数和幂。
以十进制数字系统为例,其符号集为{0,1,2,3,4,5,6,7,8,9},一共十个符号,这十个符合组成的符号集就是十进制数字系统用来表示数字的全部符号。
其次,十进制数字系统的基数是10,不仅仅是因为它的符号集有十个符号,更主要的原因是逢十进一,逢十进的这个一就代表了一个数10,即是相对于进位位的10倍数值。
最后,幂的概念,在前面的1234例子中,每一个基数10都有一个相对应的幂,其数值由符号所在的位置赋予,也可以当作是由个位向上进位的次数。
总而言之,现代社会使用的数字系统几乎都是位置化数字系统,二进制、八进制、十六进制、十进制都是位置化数字系统,非位置化数字系统最常见的是古代的罗马数字,这里不做赘述。
3.二进制转换成十进制
先来讲一讲最简单的部分,如何将二进制数转换成十进制数,分为整数部分和小数部分两个方面。
3.1整数部分
方法:按照位置化数字系统展开即可。
例子:将无符号整数1011转换成十进制数:
先按照位置化数字系统的标准格式展开;
再将其按照十进制数字求和;
1011=1×8+0×4+1×2+1×1=11
所以1011的十进制数表示为11。
3.2 小数部分
方法:按照位置化数字系统展开,注意小数点后面的基数的幂为负数。
例子:将无符号整数1011.0101转换成十进制数:
整数部分1011已经得出其十进制数是11,现在只需要计算小数部分的十进制数值即可;
再将其按照十进制数字求和;
0101=0×0.5+1×0.25+0×0.125+1×0.0625=0.3125
将11与0.3125相加得出最终结果为11.3125;
(正如我们所见,二进制并不能精确表示所有十进制小数。)
4. 十进制转换成二进制
4.1 整数部分
方法:除2取余,直到被除数(十进制数)为零为止。
例子:十进制数11转换成二进制数:
通过除2取余法得出结果为01011,书写形式换成四位就是1011,即我们得出的十进制数11的二进制结果,如果需要八位,则写成00001011的形式,根据不同需求进行适当的调整。
原理:为什么除以2的余数就是二进制了呢?
先来看一看1011在位置化数字系统中的标准格式:
它代表十进制数11,即二进制1011与十进制11代表的数值是一样的。
那么,对于11的操作可以看作是对1011的操作,我们把十进制数11除以2,就可以看作在1011的位置化数字系统中进行操作。
在中,对它除以2,前三位因为2的幂不为零,所以都可以被2整除,唯一不可以被2整除的就是最后一位,也就是最低位
,除以2的结果就是余数为1。
4.2 小数部分
方法:乘2取进,直到被乘数(十进制数)小数部分为零为止。
例子:十进制数0.3125转换成二进制数:
通过乘2取进得出结果为 .0101,即十进制数0.3125的二进制形式。
原理:为什么乘以2的进位就是二进制了呢?
先来看一看 .0101在位置化数字系统中的标准格式:
与整数部分的原理相同,这里对0.3125的操作可以看作是对0101的操作。
在中,每一次乘以2,都有一位小数进位到整数部分,最先出来的是小数部分的最高位,这里是0。
5. 二进制、八进制、十六进制快速转换方法
二进制、八进制、十六进制之间的相互转换十分方便,由于8是2的三次方,16是2的四次方,所以八进制的一位数相当于二进制的3位数,十六进制的一位数相当于二进制的4位数,下面举例说明。
例如二进制10110101,在十进制中表示为181,将其转换成八进制和十六进制的图解详情如下。
将二进制10110101转换成八进制图解如下:
将二进制10110101转换成十六进制图解如下:
经过验证,八进制265,十六进制B5转换成十进制数均为181。因此,二进制、八进制、十六进制的快速转换方法,是通过1位十六进制对应4位二进制、1位十六进制对应3位二进制的方法,成组的进行转换。
6.总结
综上所述,本文简述了二进制与十进制之间的转换方法,以及二进制与八进制、十六进制之间的快速转换方法。虽然并没有对八进制转换成十进制等内容展开说明,但是原理已经呈现出来。通过文章开通的位置化数字系统的介绍,以及后面的几个例子,基本涵盖计算机中进制转换的基础内容,通过举一反三就能得出其他进制间的转换方法。最后,二进制、八进制、十六进制、十进制之间的相互转换是计算机基础知识的一部分,虽然不难,但需要多练习几次才能够熟能生巧。不熟就多练习,相信以后无论是考试还是日常工作都能够很轻松的应对进制转换的问题。