进制之间的转换
计算机内部使用的数字符号只有“0”和“1”两个。也就是说计算机内部使用的是二进制数所有的数值数据和非数值数据,都是由“0”和“1”这两个数字符号加以组合而成的,我们称之为“二进制代码”。
1.为什么要采用二进制
尽管二进制数不符合人们的习惯。但是计算机内部仍采用二进制表示信息,主要原因有以下几点:
1) 容易实现
计算机是由逻辑电路组成,逻辑电路通常只有两种状态。例如:开关的接通与断开,电压电平的高与低等。这两种状态正好用来表示二进制数的两个数码0和1。
2) 工作可靠
两个状态代表的两个数码在数字传输和处理中不容易出错,因而电路更加稳定可靠。
3) 简化运算
二进制运算法则简单。两个一位二进制数的求和、求积运算组合仅有三种,即0+0=0,0+1=1,1+0=1,1+1=0(向高位进一)及0*0=0,0*1=1,1*0=0,1*1=1。而求两个一位十进制的和与积的运算组合则各有55种之多,让计算机去实现就困难的多。
4) 逻辑性强
计算机的工作是建立在逻辑运算基础上的,逻辑代数是逻辑运算的理论依据。二进制只有两个数码,正好代表逻辑代数中的“真”与“假”。
5) 易于转换
二进制数与十进制数之间可以互相转换。这样,既有利于充分发挥计算机的特点,又不影响人们使用十进制数的习惯。
2.数值间的转换
计算机只用二进制的两个数码“0”和“1”来实现算术和逻辑运算,而人们仍然用十进制的形式向计算机中输入原始数据,并让计算机也用十进制形式显示和打印运算结果。所以必须有一种自动转换方法,即让数据输入计算机后,将十进制转换成对应的二进制数,并在处理完毕后,再自动将二进制结果转换为十进制数。
为了表达方便起见,常在数字后加一缩写字母后缀作为不同进制数的标识。各种进制数的后缀字母分别为:
B:二进制数。
Q:八进制数。
D:十进制数。
H:十六进制数。
对于十进制数通常不加后缀,也即十进制数后的字母D可省略。
(1)将二进制数转换成对应的十进制数
将二进制数转换成对应的十进制数的方法是:
利用二进制数按权展开的多项式之和的表达式,取基数为2,逐项相加,其和就是对应的十进制数。
例1:将二进制数1011.1转换成对应的十进制
解:1011.1B=1×23+0×22+1×21+1×20+1×2-1
=8+0+2+1+0.5
=11.5D
(2)将十进制数转换成对应的二进制数
将十进制数转换为对应的二进制数的方法是:
对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。
对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”。
例:将十进制117.625D转换成二进制数
解:整数部分:
小数部分:
所以 117.625D=1110101.101B
特别提示:将十进制数转换成其他进制数方法与次上述方法类似。
(3)将二进制数转换为对应的八进制数
由于1位八进制数对应3位二进制数,所以二进制数转换成八进制数时,只要以小数点为界,整数部分向左,小数部分向右每3位分成一组,各组用对应的1位八进制数字表示,即可得到对应的八进制数值。最左最右端分组不足3位时,可用0补足。
例:将1101101.10101B转换成对应的八进制数。
解:
所以,1101101.10101B=155.52Q。
同理,用相反的方法可以将八进制数转换成对应的二进制数。
(4)将二进制数转为对应的十六进制数
由于1位十六进制数对应4位二进制数,所以二进制数转换为十六进制时,只要以小数点为界,整数部分向左,小数部分向右每4位分成一组,各组用对应的1位十六进制数字表示,即可得到对应的十六进制数值。两端的分组不足4位时,用0补足。
例:将1101101.10101B转换成对应的十六进制数
解:
所以 1101101.10101B=6D.8AH。
同理,用相反的方法可以将十六进制数转换成对应的二进制数。
至于其他的转换方法,如八进制到十进制,十六进制到十进制之间的转换,同样可用按权展开的多项式之和及整数部分用“除基取整数”来实现的。只不过此时基数分别为8和16。当然,更简单实用的方法是借用二进制数做桥梁,用“八——二——十”或“十六——二——八”的转换方法来实现。
1.为什么要采用二进制
尽管二进制数不符合人们的习惯。但是计算机内部仍采用二进制表示信息,主要原因有以下几点:
1) 容易实现
计算机是由逻辑电路组成,逻辑电路通常只有两种状态。例如:开关的接通与断开,电压电平的高与低等。这两种状态正好用来表示二进制数的两个数码0和1。
2) 工作可靠
两个状态代表的两个数码在数字传输和处理中不容易出错,因而电路更加稳定可靠。
3) 简化运算
二进制运算法则简单。两个一位二进制数的求和、求积运算组合仅有三种,即0+0=0,0+1=1,1+0=1,1+1=0(向高位进一)及0*0=0,0*1=1,1*0=0,1*1=1。而求两个一位十进制的和与积的运算组合则各有55种之多,让计算机去实现就困难的多。
4) 逻辑性强
计算机的工作是建立在逻辑运算基础上的,逻辑代数是逻辑运算的理论依据。二进制只有两个数码,正好代表逻辑代数中的“真”与“假”。
5) 易于转换
二进制数与十进制数之间可以互相转换。这样,既有利于充分发挥计算机的特点,又不影响人们使用十进制数的习惯。
2.数值间的转换
计算机只用二进制的两个数码“0”和“1”来实现算术和逻辑运算,而人们仍然用十进制的形式向计算机中输入原始数据,并让计算机也用十进制形式显示和打印运算结果。所以必须有一种自动转换方法,即让数据输入计算机后,将十进制转换成对应的二进制数,并在处理完毕后,再自动将二进制结果转换为十进制数。
为了表达方便起见,常在数字后加一缩写字母后缀作为不同进制数的标识。各种进制数的后缀字母分别为:
B:二进制数。
Q:八进制数。
D:十进制数。
H:十六进制数。
对于十进制数通常不加后缀,也即十进制数后的字母D可省略。
(1)将二进制数转换成对应的十进制数
将二进制数转换成对应的十进制数的方法是:
利用二进制数按权展开的多项式之和的表达式,取基数为2,逐项相加,其和就是对应的十进制数。
例1:将二进制数1011.1转换成对应的十进制
解:1011.1B=1×23+0×22+1×21+1×20+1×2-1
=8+0+2+1+0.5
=11.5D
(2)将十进制数转换成对应的二进制数
将十进制数转换为对应的二进制数的方法是:
对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。
对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”。
例:将十进制117.625D转换成二进制数
解:整数部分:
小数部分:
所以 117.625D=1110101.101B
特别提示:将十进制数转换成其他进制数方法与次上述方法类似。
(3)将二进制数转换为对应的八进制数
由于1位八进制数对应3位二进制数,所以二进制数转换成八进制数时,只要以小数点为界,整数部分向左,小数部分向右每3位分成一组,各组用对应的1位八进制数字表示,即可得到对应的八进制数值。最左最右端分组不足3位时,可用0补足。
例:将1101101.10101B转换成对应的八进制数。
解:
所以,1101101.10101B=155.52Q。
同理,用相反的方法可以将八进制数转换成对应的二进制数。
(4)将二进制数转为对应的十六进制数
由于1位十六进制数对应4位二进制数,所以二进制数转换为十六进制时,只要以小数点为界,整数部分向左,小数部分向右每4位分成一组,各组用对应的1位十六进制数字表示,即可得到对应的十六进制数值。两端的分组不足4位时,用0补足。
例:将1101101.10101B转换成对应的十六进制数
解:
所以 1101101.10101B=6D.8AH。
同理,用相反的方法可以将十六进制数转换成对应的二进制数。
至于其他的转换方法,如八进制到十进制,十六进制到十进制之间的转换,同样可用按权展开的多项式之和及整数部分用“除基取整数”来实现的。只不过此时基数分别为8和16。当然,更简单实用的方法是借用二进制数做桥梁,用“八——二——十”或“十六——二——八”的转换方法来实现。