彻底明白各进制数之间的转换

进制之间的转换是很基础的知识,为了清晰、简单、易懂的弄清楚这方面,所以我才写这篇文章的念头,希望能让你再也不用担心、害怕进制之间的转换了。

二进制

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。现代的计算机和依赖计算机的设备里都用到二进制。每个数字称为一个比特(Bit,Binary digit的缩写)。

1 ~ 9的二进制数值是多少?

数字二进制数
100000001
200000010
300000011
400000100
500000101
600000110
700000111
800001000
900001001

八进制

八进制,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制。八进制的数和二进制数可以按位对应(八进制一位对应二进制三位),因此常应用在计算机语言中。

怎么理解八进制一位对应二进制三位?

二进制是0和1;八进制是0至7;那么八进制的0至7的每一位就是:

八进制字二进制数
100000001
200000010
300000011
400000100
500000101
600000110
700000111

十进制

800,7/9,-7.99 等等看着这些耳熟能详的数字,其实这都是全世界通用的十进制,即满十进一,满二十进二,以此类推;按权展开,第一位权为100,第二位101 以此类推,第N位10^(N-1),该数的数值等于每位位的数值*该位对应的权值之和。十进制数是组成以10为基础的数字系统,有0,1,2,3, 4, 5, 6, 7, 8, 9十个基本数字组成。

十六进制

十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或af)表示,其中:AF表示10~15,这些称作十六进制数字。

二进制与八进制转换

八进制转二进制

取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。例:将八进制数63.54转换为二进制为:

将八进制数63.54转换为二进制数为110011.101100,即110011.1011

二进制转八进制

取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,得到的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。

  • 例:将二进制数101110.101转换为八进制
    得到结果:将101110.101转换为八进制为56.5

  • 例:将二进制数1101.1转换为八进制
    得到结果:将1101.1转换为八进制为15.4

二进制与十进制转换

十进制正整数转成二进制

除二取余,然后倒序排列,高位补零。

1.首先用2整除一个十进制整数,得到一个商和余数
2.然后再用2去除得到的商,又会得到一个商和余数
3.重复操作,一直到商为小于1时为止
4.然后将得到的所有余数全部排列起来,再将它反过来(逆序排列),切记一定要反过来!

42除以2得到的余数分别为010101,然后咱们倒着排一下,42所对应二进制就是101010

十进制小数转二进制

采用"乘2取整,顺序排列"法:

1.用2乘十进制小数,可以得到积,将积的整数部分取出
2.再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出
3.重复操作,直到积中的小数部分为零,此时0或1为二进制的最后一位,或者达到所要求的精度为止

例如将0.125转换为二进制:

0.125  *  2  =  0.25  ------0
0.25   *  2  =  0.5   ------0
0.5  *  2  =  1.0     ------1

当小数部分为0就可以停止乘2了,然后正序排序就构成了二进制的小数部分:0.001

如果小数的整数部分有大于0的整数时,将整数部分和小数部分先单独转为二进制,再合在一起就可以了,例如:
假设要将8.125 转换为二进制:现将8转为二进制:得到1000,再将0.125转为二进制:得到0.001,合并后为1000.001。

二进制转换为十进制

二进制转为十进制要从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右。如果首位是0就表示正整数,如果首位是1则表示负整数,正整数可以直接换算,负整数则需要先取反再换算。因为计算机内部表示数的字节单位是定长的。如8位、16位、32位。所以位数不够时,高位补零。如要想二进制00101010转为十进制,因为以0开头,所以这是正整数,计算如下所示:

二进制与十六进制转换

首先,我们需要了解一个数学关系,即23=8,24=16,而八进制和十六进制是用这个关系衍生而来的,即用三位二进制表示一位八进制,用四位二进制表示一位十六进制数。接着,记住4个数字8、4、2、1(23=8、22=4、21=2、20=1)。现在我们来看二进制与八进制之间的转换。

  • 先要看看十六位数的表示方法
数值0123456789101112131415
16进制数0123456789ABCDEF
  • 再来掌握二进制数与十六进制数之间的对应关系。只有牢牢掌握的对应关系,在转换的过程中才会事半功倍。
16进制数0123456789ABCDEF
2进制数0000000100100011010001010110011110001001101010111100110111101111
  • 二进制转换成十六进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位,对照二进制与十六进制数的对应表,将四位二进制按权相加,得到的数就是一位十六进制数,然后按顺序排列,小数点的位置不变哦,最后得到的就是十六进制数哦,如图所示。

  • 注意16进制的表示法,用字母H后缀表示,比如BH就表示16进制数11;也可以用0X前缀表示,比如0X23就是16进制的23.直观表示法如图所示。

  • 这里需要注意的是,在向左(或向右)取四位时,取到最高位(最低位)如果无法凑足四位,就可以在小数点的最左边(或最右边)补0,进行换算,如图所示。

  • 十六进制转为二进制,反过来啦,方法就是一分四,即一个十六进制数分成四个二进制数,用四位二进制按权相加,最后得到二进制,小数点依旧就可以啦。如图7所示。

八进制与十进制转换

  • 八进制如何转换成十进制。其方法与二进制转换成十进制差不多:按权相加法,即将八进制每位上的数乘以位权(如8,64,512….),然后将得出来的数再加在一起。如将72.45转换为十进制。如图所示。

  • 十进制转八进制,有两种方法:直接法与间接法,先看直接的方法,与十进制转成二进制相同,咱们还是分整数部分转换和小数部分转换。

整数部分,除8取余法,每次将整数部分除以8,余数为该位权上的数,商继续除以8,余数又为上一个位权上的数,然后以此类推一直下去,直到商为零,最后从最后一个余数向前排列就可以了,嗨,还是上图直观,如图所示。

再看小数部分,与转二进制相同,这里是乘八取整法,也就是说小数部分乘以8,然后取整数部分,再让剩下的小数部分再乘以8,再取整数部分,……以此类推,一直乘到小数部分为零为止。例如0.703125。

0.703125 * 8 = 5.625 ...................5
0.625    * 8 = 5.0   ...................5
小数部分就是0.55。

小数部分乘以8,如果永远也碰不到零该怎么办?如图4所示(假设示范哦),那就根据位数要求进行“3舍4入”吧。

0.0001   *  8 = 0.0008.................................0
0.0008   *  8 = 0.0064.................................0
0.0064   *  8 = 0.0512.................................0
0.0512   *  8 = 0.4096.................................0
0.4096   *  8 = 3.2768.................................3
0.2768   *  8 = 2.2044.................................2
2.2044   *  8 = 1.6352.................................1
..........
..........
..........
比如取到结果为3的位置,那么小数就是0.00003

这个是直接的方法,还有一个间接的方法捏?就是先把十进制转换为二进制,然后再由二进制转换为8进制,例如将十进制478.125转为八进制。

先转为二进制为:

(478.125)10=(111011110.001)2

二进制再转为八进制为:

(111011110.001)2=(736.1)8

咱们用图来解释一下,如图所示为转换为二进制的介绍。

然后再将二进制转换为八进制,温习一下二进制数与八进制数的对照表。

八进制01234567
二进制000001010011100101110111

对照图表将二进制转换为八进制后的结果如图7所示。

八进制转十六进制

  • 八进制 → 十六进制
    将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。

例:将八进制的(327)O转换为十六进制的步骤如下:

  1. 3 = 011;

  2. 2 = 010;

  3. 7 = 111;

  4. 0111 = 7;

  5. 1101 = D;

  6. 读数,读数从高位到低位,D7,即(327)O=(D7)H。

  • 十六进制 → 八进制
    将十六进制转换为二进制,然后再将二进制转换为八进制,小数点位置不变。

例:将十六进制的(D7)H转换为八进制的步骤如下:

  1. 7 = 0111;

  2. D = 1101;

  3. 0111 = 7;

  4. 010 = 2;

  5. 011 = 3;

  6. 读数,读数从高位到低位,327,即(D7)H=(327)O。

十进制转十六进制

方法1:除16取余法,即每次将整数部分除以16,余数为该位权上的数,而商继续除以16,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。

例:将十进制的(796)D转换为十六进制的步骤如下:

  1. 将商796除以16,商49余数为12,对应十六进制的C;

  2. 将商49除以16,商3余数为1;

  3. 将商3除以16,商0余数为3;

  4. 读数,因为最后一位是经过多次除以16才得到的,因此它是最高位,读数字从最后的余数向前读,31C,即(796)D=(31C)H。

方法2:使用间接法,先将十进制转换成二进制,然后将二进制又转换成十六进制;

  • 18
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峰晨朴朴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值