下面在安静的音乐中,让我们开始学习吧
公式库网
03:40来自生活用电
在我们接触编程知识时,总会接触有关进制转换的知识,最常见的就是10进制与二进制或十六进制之间的转换,很多时候我们总会遗忘,虽然现在也出现了很多可以直接使用的网络在线的进制转换工具,但考试中,我们就要靠自己通过公式进行运算了。今天就跟大家分享一下有关进制转换的理论知识,大家可以通过对比从里面发现共同点,这样便于我们理解记忆。
在进行讲解之前,我们先在下面放置一个对应表,因为在理解下面转换的时候,你可以随时查看该表。
一、 十进制与二进制之间的转换
(1) 十进制转换为二进制,分为整数部分和小数部分① 整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。下面举例: 例:将十进制的168转换为二进制 得出结果 将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0。 第二步,将商84除以2,商42余数为0。 第三步,将商42除以2,商21余数为0。 第四步,将商21除以2,商10余数为1。 第五步,将商10除以2,商5余数为0。 第六步,将商5除以2,商2余数为1。 第七步,将商2除以2,商1余数为0。 第八步,将商1除以2,商0余数为1。 第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000 ② 小数部分 方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分 为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数,下面举例: 例1:将0.125换算为二进制 得出结果:将0.125换算为二进制(0.001)2 分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25; 第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5; 第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0; 第四步,读数,从第一位读起,读到最后一位,即为0.001。 例2,将0.45转换为二进制(保留到小数点第四位) 大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。这个也是计算机在转换中会产生误差,但是由于保留位数很多,精度很高,所以可以忽略不计。 那么,我们可以得出结果将0.45转换为二进制约等于0.0111 上面介绍的方法是十进制转换为为二进制的方法,需要大家注意的是: 1) 十进制转换为二进制,需要分成整数和小数两个部分分别转换 2) 当转换整数时,用的除2取余法,而转换小数时候,用的是乘2取整法 3) 注意他们的读数方向 因此,我们从上面的方法,我们可以得出十进制数168.125转换为二进制为10101000.001,或者十进制数转换为二进制数约等于10101000.0111。 (2) 二进制转换为十进制 不分整数和小数部分 方法:按权相加法,即将二进制每位上的数乘以权,然后相加之和即是十进制数。例 将二进制数101.101转换为十进制数。 计算过程:
(1*2+0*2+1*2).(1*2+0*2+1*2)=5.625
得出结果:(101.101)2=(5.625)10 大家在做二进制转换成十进制需要注意的是1) 要知道二进制每位的权值 2) 要能求出每位的值
从最后一位开始算,依次列为第0、1、2...位 (注意是从第0位开始数的,而不是1)
第n位的数(0或1)乘以2的n次方
得到的结果相加就是答案
二、八进制与十进制的转换(1)十进制转换为八进制十进制转换成八进制有两种方法: 1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制 2)直接法:前面我们讲过,八进制是由二进制衍生而来的,因此我们可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下: ①整数部分 方法:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。 ②小数部分 方法:乘8取整法,即将小数部分乘以8,然后取整数部分,剩下的小数部分继续乘以8,然后取整数部分,剩下的小数部分又乘以8,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,暂取个名字叫3舍4入。 例:将十进制数796.703125转换为八进制数 解:先将这个数字分为整数部分796和小数部分0.703125
整数部分 796除8商99余数4,取4
99除8商12余数3,取3
12除8商1余数4,取4
1除8除不开,取1
从下往上读,整数部分为:1434
小数部分 0.703125*8=5.625 取5
0.625*8=5 取5
小数部分从上往下读,为:55
因此,得到结果十进制796.703125转换八进制为1434.55 上面的方法大家可以验证一下,你可以先将十进制转换,然后在转换为八进制,这样看得到的结果是否一样 (2)八进制转换为十进制方法:按权相加法,即将八进制每位上的数乘以位权,然后相加之和即是十进制数。 例:①将八进制数67.35转换为十进制
三、十六进制与十进制的转换十六进制与八进制有很多相似之处,大家可以参照上面八进制与十进制的转换自己试试这两个进制之间的转换。 即把上面对应的8变为16进行运算。
四、 二进制与八进制之间的转换
首先,我们需要了解一个数学关系,即2=8,2=16,而八进制和十六进制是用这关系衍生而来的,即用三位二进制表示一位八进制,用四位二进制表示一位十六进制数。 接着,记住4个数字8、4、2、1(2=8、2=4、2=2、2=1)。现在我们来练习二进制与八进制之间的转换。 (1) 二进制转换为八进制 方法:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加(如果熟练了最上面我们分享的表格,我们就可以直接读出对应的数字),得到的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。例 ①将二进制数101110.101转换为八进制 从小数点向左每隔三位读取
二进制110对应6
二进制101对应5
所以整数部分是:56
从小数点向右每隔三位读取
二进制101对应5
小数部分为:0.5得到结果:将101110.101转换为八进制为56.5 ② 将二进制数1101.1转换为八进制 这个就简写了,看看你能看懂了吗?
101对应5
001对应1
100对应4得到结果:将1101.1转换为八进制为15.4
③再来一个例子(11001.101)(二)
整数部分: 从后往前每三位一组,缺位处有0填补,然后按十进制方法进行转化, 则有:
001=1
011=3
然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式
小数部分: 从前往后每三位一组,缺位处有0填补,然后按十进制方法进行转化, 则有:
101=5
然后我们将结果部分按从上往下的顺序书写就是:5,那么这个5就是二进制0.625的八进制形式
所以:(11001.101)(二)=(31.5)(八)
(2) 将八进制转换为二进制方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数(其实,熟记了表格内的内容后,可以一眼就读出来了),小数点位置照旧。例: ① 将八进制数67.54转换为二进制 6对应110
7对应111
5对应101
4对应100
因此,将八进制数67.54转换为二进制数为110111.101100,即110111.1011 大家从上面这道题可以看出,计算八进制转换为二进制 首先,将八进制按照从左到右,每位展开为三位,小数点位置不变 然后,按每位展开为2,2,2(即4、2、1)三位去做凑数,即a×2+ b×2 +c×2=该位上的数(a=1或者a=0,b=1或者b=0,c=1或者c=0),将abc排列就是该位的二进制数 接着,将每位上转换成二进制数按顺序排列 最后,就得到了八进制转换成二进制的数字。 以上的方法就是二进制与八进制的互换,大家在做题的时候需要注意的是 1) 他们之间的互换是以一位与三位转换,这个有别于二进制与十进制转换 2) 大家在做添0和去0的时候要注意,是在小数点最左边或者小数点的最右边(即整数的最高位和小数的最低位)才能添0或者去0,否则将产生错误
再举个例子吧:(31.5)(八)
整数部分:从后往前每一位按十进制转化方式转化为三位二进制数,缺位处用0补充 则有:
1---->1---->001
3---->101
然后我们将结果按从下往上的顺序书写就是:11001,那么这个11001就是八进制31的二进制形式
说明,关于十进制的转化方式我这里就不再说了,上一篇文章我已经讲解了!
小数部分:从前往后每一位按十进制转化方式转化为三位二进制数,缺位处用0补充 则有:
5---->101
然后我们将结果按从下往上的顺序书写就是:101,那么这个101就是八进制5的二进制形式
所以:(31.5)(八)=(11001.101)(二)
五、 二进制与十六进制的转换方法:与二进制与八进制转换相似,只不过是一位(十六)与四位(二进制)的转换,下面具体讲解 (1) 二进制转换为十六进制 方法:取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,得到的数就是一位十六位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。 ①例:将二进制11101001.1011转换为十六进制 从小数点开始向左取四位读数
1001对应9
1110对应16
整数部分为169,注意了16在16进制中写为E,所以是E9(看上面的表就懂了)
从小数点开始向右取四位读数
1011对应11,注意了11在16进制中写为B
得到结果:将二进制11101001.1011转换为十六进制为E9.B ② 例:将101011.101转换为十六进制 因此得到结果:将二进制101011.101转换为十六进制为2B.A (2)将十六进制转换为二进制 方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。 ①将十六进制6E.2转换为二进制数 因此得到结果:将十六进制6E.2转换为二进制为01101110.0010即110110.001
再举例:
(19.A)(十六)
整数部分:从后往前每位按十进制转换成四位二进制数,缺位处用0补充 则有:
9---->1001
1---->0001(相当于1)
六、八进制与十六进制的转换方法:一般不能互相直接转换,一般是将八进制(或十六进制)转换为二进制,然后再将二进制转换为十六进制(或八进制),小数点位置不变。那么相应的转换请参照上面二进制与八进制的转换和二进制与十六进制的转换。 如果我们能够熟练记住表格的内容,可以很快捷的进行计算。 要注意,十进制转换为其余三种进制之间,要分为整数部分和小数部分,最后就是小数点的位置。熟能生巧,希望大家多多练习哦。我在我的博客公式库网上也发表了这篇文章,并且在下面附上了转换工具,想要练习的朋友,可以在做完后,用工具直接进行验证哦。