从大学开始系统的接触计算机专业,到现在已经过去十几年了,今天整理一下基础的进制转换,希望给还在上高中的表妹一个入门的引导,早日熟悉这个行业。
一、二进制、八进制、十进制和十六进制是如何定义的?
二进制是Binary,简写为B,二进制只有0和1两个值,计算方法是逢二进一。比如01B+01B(其中B是Binary的首字母,即二进制的简写),结果就是10B,因为逢二进一,低位的1相加后得2就向高位进1;
八进制是Octal,简写为O,八进制是指有0~7这8个值的表示法,计算方法是逢8进1。比如17O+23O=42O,因为逢8进一,低位的7+3=10,10在八进制就是12,加上原来高位的1+2,结果就是42O;
十进制是Decimal,简写为D,十进制即咱们日常使用的0~9。咱们日常做的计算都是十进制的,计算方法是逢十进一,比如21D+11D=32D;
十六进制是Hexadecimal,简写为H,十六进制用数字0-9和字母a-f(或其大写A-F)表示0到15,计算方法是逢16进1,比如1DH+25H=42H,因为逢16进一,低位的D相当于十进制的13,而5即可以看成是十进制的5,相加得18,而18-16=2,因此低位的值为2,高位的值即1+2再加上进位1即得4,高位结果就是4,最后结果是42H;
其中计算机采用的是二进制作为基础,在此基础上拓展了八进制、十进制、十六进制等。
二、为什么二进制是基础?
二进制如今主要⽤在电⼦技术的数字电路中。⽐如我们经常使⽤的计算机能够识别的语⾔就是二进制语⾔。数字电路中的⾼、低电平;导通、截⽌;开、关;有、无;真、假等等都是二进制表⽰,二进制的逻辑电路使⽤0和1表⽰。
采用二进制主要有以下几个原因:
1、技术实现简单。计算机是由逻辑电路组成,逻辑电路通常只有两种状态,开关的接通和断开,正好用“0”“1”表示。
2、运算规则简单,两个二进制数的和、积运算组合简单。二进制数加法和乘法仅各有3条运算规则( 0+0=0,0+1=1,1+1=1 0和0×0=0,0×1=0,1×1=1 )运算规则简单,有利于简化内部结构,提高运算速度。
3、适合逻辑运算,二进制只有两个数字,和逻辑代数中的“真”“假”相吻合。
4、易于进行转换,二进制数能很容易地转换成八进制、十六进制,也能转换成十进制。
三、为什么有了二进制还需要使用八进制、十进制和十六进制?
八进制和⼗六进制在现实主要⽤在电⼦技术、计算机编程等领域,这是为了配合二进制⽽使⽤的。上⾯我们说过二进制是计算机所能识别的最直接语⾔,但是二进制的位数太多,不好记录,这时就需要把二进制转化为八进制或十六进制。举个例子,买一件商品花费1百块钱,可以使用1元的人民币支付,也可以使用1百元的人民币支付,相对来说,使用百元更方便一点。
⼗进制主要在日常⽣活中,⽽二进制、八进制、十六进制主要⽤在电⼦技术⾏业。二进制是数字电路、处理器等最直接的语⾔;
八进制以及十六进制都是进⾏存储记忆,但八进制较少使⽤。十六进制⽤来表⽰处理器⾥的寄存器、存储器的地址、数据。
四、进制之间如何转换?
主要思路:二进制数,八进制数、十六进制数可以采用按权展开法转化为十进制数,十进制转化为R进制要分为两部分【这里R进制是泛指,可以代表二进制、八进制、十六进制等】,其中整数部分要除R取余,直到商为0,小数部分要乘R取余直到得到整数。
1. 十进制转R进制
1.1. 十进制转二进制
(1)十进制整数转二进制
十进制整数转换成二进制采用“除2倒取余法”,即将十进制整数除以2,得到一个商和一个余数;再将商除以2,又得到一个商和一个余数;以此类推,直到商等于零为止。
例题: 175D = ______ B
解析:如下图所示,将175除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:10101111B。
(2)十进制小数转二进制
十进制小数转换成二进制小数采用 “乘2取整,顺序排列” 法。
具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
例题: 0.68D = ______ B(精确到小数点后5位)
解析:如下图所示,0.68乘以2,取整,然后再将小数乘以2,取整,直到达到题目要求精度。得到结果:0.10101B
1.2. 十进制转八进制
思路和十进制转二进制一样,参考如下例题:
例题: 10.68D = ______ Q(精确到小数点后3位)
解析:如下图所示,整数部分除以8取余数,直到无法整除。小数部分0.68乘以8,取整,然后再将小数乘以8,取整,直到达到题目要求精度。得到结果:12.534Q
1.3. 十进制转十六进制
思路和十进制转二进制一样,参考如下例题:
例题: 25.68D = ______ H(精确到小数点后3位)
解析:如下图所示,整数部分除以16取余数,直到无法整除。小数部分0.68乘以16,取整,然后再将小数乘以16,取整,直到达到题目要求精度。得到结果:19.ae1H
2. R进制转十进制
2.1. 二进制转十进制
方法为:把二进制数按权展开、相加即得十进制数。(具体用法如下图)
例题: 1011 0111B = ______ D
解析:1×27+0×26+1×25+1×24+0×23+1×22+1×22+1×20 = 128+0+32+16+0+4+2+1=183
2.2. 八进制转十进制
八进制转十进制的方法和二进制转十进制一样。
例题: 302Q = ______ D
302.46Q = ______ D
解析:302Q = 3×8² + 0×8¹ + 2×8⁰ = 192 + 0 + 2 = 194D
302.46Q = 3×8² + 0×8¹ + 2×8⁰ + 4×8⁻¹ + 6×8⁻² = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375D
2.3. 十六进制转十进制
例题: 23daH = ______ D
解析:23daH = 2×163+3×162+d×161+a×160 = 9178D
3. 二进制转八进制
二进制转换成八进制的方法是,取三合一法,即从二进制的小数点为分界点,向左(或向右)每三位取成一位。
例题: 1010 0100B = ____Q
解析:1010 0100B = 010 001 100B=244Q
4. 二进制转十六进制
二进制转换成八进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位。
例题: 1010 0100B = ____H
解析:1010 0100B = 1010 0100 B = a4H
总结:二进制转八进制或者二进制转换成十六进制,也可以先转换成十进制,再转换成目标进制。