二、八、十六进制之间的转换详解
大家都知道,十进制数是我们生活中常用的进制,一直伴随着我们的生活,它也中国的一大发明!而除了十进制以外,其他进制也在我们生活中广泛使用。如计算机的内部所有的数据都是以二进制代码的形式存储,处理和传送,但很多时候为了用户的方便,也常用到八进制和十六进制。
数制的简介
在十进制(Decimal)系统中,用0~9十个数字来表示数值,进位原则是“逢十进一”,减法借1当10。
在二进制(Binary)系统中,用0,1两个数字来表示数值,进位原则是“逢二进一”,减法借1当2。
在八进制(Octal)系统中,用0~7八个数字来表示数值,进位原则是“逢八进一”。减法借1当8。
在十六进制(Hexadecimal)系统中,除了0~9,用A表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有0~F共16个数字表示数值,进位原则是“逢十六进一”,减法借1当16。
在数值的表示的时候,可以用小括号将所表示的数括起来,然后在右括号外的右下角写上数制或缩写。
数制之间的转换
以二进制为桥梁的方法最好计算。
将十进制、八进制,十六进制统统转化成二进制,再通过相应方法转变为其他进制数。
十进制、八进制、十六进制转换为二进制
二进制、八进制和十六进制向十进制转换都非常容易,就是相应位置的“数”乘以相应位置的“权”,再将所有的乘积进行累加,即得到对应的十进制数
对于整数部分,从右往左看,第i位的权等于Ni-1
对于小数部分,从左往右看,第j位的位权为N-j。
如八进制数674.853,6的权为82,5的权为8-2
674.153=6*82+7*81+4*80+1*8-1+5*8-2+3*8-3
将十进制转换为二进制、八进制、十六进制
整数部分:
十进制整数转换为N进制整数采用“除N取余,逆序排列”法,
将N作为除数,用十进制整数除以N,可以得到一个商和余数,保留余数,
用商继续除以N,又得到一个新的商和余数,反复进行,每次都保留余数,用商接着除以N,直到商为0时为止。
将余数从低位到高位排列起来得到N进制整数
小数部分
十进制小数转换成N进制小数采用“乘N取整,顺序排列”法。
用小数乘N,得到的结果包含整数和小数
整数部分取出,再用N乘以余下的小数部分,又得到一个新的结果;
再将整数部分取出,继续用N乘以余下的小数部分,反复进行,每次都取出整数部分,用N接着乘以小数部分,直到结果中小数部分为0
将取出的整数从高位到低位排列起来得到N进制小数
有了这两种方法,根据桥梁关系,任何进制之间都可以进行转换了。
当然根据特殊需要,还有一些进制之间的转换可以更加的方便。
二进制和八进制、十六进制的转换
二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,从低位向高位依次进行,高位不足三位用零补齐。
反过来八进制转换为二进制,每一位八进制数字转换为三位二进制数字,从低位向高位依次进行
二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,从低位向高位依次进行,高位不足四位用零补齐。
十六进制整数转换为二进制整数时,每一位十六进制数字转换为四位二进制数字,是从低位向高位依次进行。
以上就是关于各进制之间转换的相关内容了,大家觉得怎么样呢,一定要自己动手多算一算哦~
来源:天玑编程
2021-10-18 172809
捱过春秋
看一遍就会了!二进制八进制十六进制转换
十进制
十进制计数法是相对二进制计数法而言的,是我们日常使用最多的计数方法(俗称“逢十进一”)
用0-9表示
数据十进制整数转二进制
例子1:50=110010₍₂₎:
50/2=25--------->余0
25/2=12--------->余1
12/2=6--------->余0
6/2=3--------->余0
3/2=1--------->余1
1/2=0--------->余1
将余数逆序排列得到结果:110010
例子2:253=11111101₍₂₎:
253/2=126--------->余1
126/2=63--------->余0
63/2=31--------->余1
31/2=15--------->余1
15/2=7--------->余1
7/2=3--------->余1
3/2=1--------->余1
1/2=0--------->余1
将余数逆序排列得到结果:11111101
十进制转八进制
例子1:50=62₍₈₎:
50/8=6--------->余2
6/8=0--------->余6
将余数逆序排列得到结果:62
例子2:253=375₍₈₎:
253/8=31--------->余5
31/8=3--------->余7
3/8=0--------->余3
将余数逆序排列得到结果:375
十进制转十六进制
例子1:50=32₍₁₆₎:
50/16=3--------->余2
3/16=0--------->余3
将余数逆序排列得到结果:32
例子2:253=fd₍₁₆₎:
253/16=15--------->余13 13在十六只进制中用D表示
15/16=0--------->余15 15在十六只进制中用F表示
将余数逆序排列得到结果:fd
二进制
二进制(binary)是在数学和数字电路中指以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示[1]。数字电子电路中,逻辑门的实现直接应用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制。每个数字称为一个比特(Bit,Binary digit的缩写)。
将二进制数据111.01写成加权系数的形式。
解:
二进制和十六进制,八进制一样,都以二的幂来进位的。
二进制转十进制
例子:1101₍₂₎=13:
#从右向左2的幂从0递增+1
1*2⁰=1
0*2¹=0
1*2²=4
1*2³=8
最后将所有结果累加:13
二进制转八进制
例子:11010111₍₂₎=327₍₈₎
步骤一:将11010111分解成三组011 010 111
步骤二:分别计算三组的十进制
011₍₂₎=3
010₍₂₎=2
111₍₂₎=7
步骤三:将上述计算结果拼接得到八进制327
方案1:将二进制转十进制,再将十进制转八进制得到结果:15
方案2:
将二进制以3个数划分为1组,不够一组数字前面用0填充,接着计算每一组的十进制,最后拼接结果。
例如1101转为001 101=>分别转十进制得到1和5=>拼接得到结果:15
二进制转十六进制
方案:取4分1法
例子:11010111₍₂₎=d7₍₁₆₎
步骤一:将11010111分解成两组四位的数1101 0111
步骤二:分别计算两组的十进制
1101₍₂₎=d
0111₍₂₎=7
步骤三:将上述计算结果拼接得到八进制d7
八进制
八进制,Octal,缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制。八进制的数和二进制数可以按位对应(八进制一位对应二进制三位),因此常应用在计算机语言中。
八进制转十进制
例子:732₍₈₎=474:
#从右向左2的幂从0递增+1
2*8⁰=2
3*8¹=24
7*8²=448
最后将所有结果累加:474
八进制转二进制
方案一:先转十进制再转二进制
方案二:取1分3法
例子:使用取1分3法将八进制327转为二进制:
将327拆成三部分3 2 7并分别计算出三位的二进制
3=>011₍₂₎
2=>010₍₂₎
7=>111₍₂₎
将计算结果拼接得到:011010111
八进制转十六进制
方案1:先将八进制转换成二进制,再将二进制转换成十六进制
方案2:先将八进制转换成十进制,再将十进制转换成十六进制
十六进制
十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或a~f)表示,其中A~F表示10~15,这些称作十六进制数字。
十六进制转十进制
例子1:a5c₍₁₆₎=2652:
#从右向左2的幂从0递增+1
c*16⁰=12*1=12
5*16¹=80
a*16²=10*256=2560
最后将所有结果累加:2652
十六进制转二进制(取1分4法)
例子:d7₍₁₆₎=11010111₍₂₎
步骤一:将d7分别分解成四位的二进制数
d=1101₍₂₎
7=0111₍₂₎
步骤三:将上述计算结果拼接得到二进制11010111
十六进制转八进制
方案1:先将十六进制转换成二进制,再将二进制转换成八进制
方案2:先将十六进制转换成十进制,再将十进制转换成八进制