进制转换原理

来源:互联网 发布:2012年网络流行歌曲 编辑:程序博客网 时间:2024/06/12 00:43
一、十进制与二进制之间的转换1、十进制转换为二进制(1)整数部分方法1(除2取余法):每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。举例:将十进制的10转换为二进制第一步,将商10除以2,商5余数为0;第二步,将商5除以2,商2余数为1;第三步,将商2除以2,商1余数为0;第四步,将商1除以2,商0余数为1;第五步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,得结果(1010)2;(2) 小数部分(方法:乘2取整法)将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是0,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数,下面举例:将0.45转换为二进制(保留到小数点第四位)0.45*2=0.9取0;  0.9*2=1.8取1;  0.8*2=1.6取1;  0.6*2=1.2取1;  0.2*2=0.4取0;  0.4*2=0.8取0;  0.8*2=1.6取1;大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。这个也是计算机在转换中会产生误差,但是由于保留位数很多,精度很高,所以可以忽略不计。那么,我们可以得出结果将0.45转换为二进制约等于 (0.0111)2。注:整数的转换是精确的,小数的转换可能出现无穷小数或循环小数的情况。此时需要进行舍入处理以截断,所以小数的转换可能略有偏差。(3)整数与小数举例:将168.45转换成二进制(168.45)=(10101000.0111)上面介绍的方法是十进制转换为为二进制的方法,需要大家注意的是:①进制转换为二进制,要分成整数和小数两个部分分别转换;② 当转换整数时,用的除2取余法,而转换小数时候,用的是乘2取整法;③ 注意他们的读数方向。2、二进制转换成十进制二进制转换为十进制不分整数和小数部分方法(按权相加法):将二进制每位上的数乘以权,然后相加之和即是十进制数。例1:将二进制01100100转换为十进制第0位 0 x 2^0 = 0  第1位 0 x 2^1 = 0  第2位 1 x 2^2 = 4  第3位 0 x 2^3 = 0  第4位 0 x 2^4 = 0  第5位 1 x 2^5 = 32  第6位 1 x 2^6 = 64  第7位 0 x 2^7 = 0  --------------------------  (0110 0100)2=(100)10例2:将二进制数(11001.101)2转换为十进制数整数部分:1 *2^4+1*2^3+0*2^2+0*2^1+1*2^0=16+8+0+0+1=25小数部分:1*2^-1+0*2^-2+1*2^-3=(1/2)^1+(1/2)^2+(1/2)^3= 0.5+0+0.125=0.625得结果:(11001.101)=(25.625)大家在做二进制转换成十进制需要注意的是①要知道二进制每位的权值;② 要能求出每位的值。二、二进制与八进制之间的转换首先,我们需要了解一个数学关系,即2^3=8,2^4=16,而八进制和十六进制是用这关系衍生而来的,即用三位二进制表示一位八进制,用四位二进制表示一位十六进制数。接着,记住4个数字8、4、2、1(2^3=8、2^2=4、2^1=2、2^0=1)。现在我们来练习二进制与八进制之间的转换。1、二进制转换为八进制方法(取三合一法):即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,得到的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。例:将二进制数(11001.101)2转换为八进制整数部分:从后往前每三位一组,缺位处有0填补,然后按十进制方法进行转化, 则有: 001=1、011=3 ,然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式小数部分:从前往后每三位一组,缺位处有0填补,然后按十进制方法进行转化, 则有: 101=5 ,然后我们将结果部分按从上往下的顺序书写就是:5,那么这个5就是二进制0.625的八进制形式所以:(11001.101)2=(31.5)82、八进制转换为二进制计算八进制转换为二进制:首先,将八进制按照从左到右,每位展开为三位,小数点位置不变;然后,将每位上转换成二进制数按顺序排列;最后,就得到了八进制转换成二进制的数字。例:将八进制数(31.5)8转换为二进制数整数部分:从后往前每一位按十进制转化方式转化为三位二进制数,缺位处用0补充 则有: 1---->1---->001;3---->011 ,然后我们将结果按从下往上的顺序书写就是:11001,那么这个11001就是八进制31的二进制形式小数部分:从前往后每一位按十进制转化方式转化为三位二进制数,缺位处用0补充 则有: 5---->101 ,然后我们将结果按从下往上的顺序书写就是:101,那么这个101就是八进制5的二进制形式所以:(31.5)8=(11001.101)2以上的方法就是二进制与八进制的互换,大家在做题的时候需要注意的是:①他们之间的互换是以一位与三位转换,这个有别于二进制与十进制转换②大家在做添0和去0的时候要注意,是在小数点最左边或者小数点的最右边(即整数的最高位和小数的最低位)才能添0或者去0,否则将产生错误三、二进制与十六进制之间的转换方法:与二进制与八进制转换相似,只不过是一位(十六)与四位(二进制)的转换,下面具体讲解1、 二进制转换为十六进制方法(取四合一法):即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,得到的数就是一位十六位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。例1:将二进制11101001.1011转换为十六进制(1110,1001).(1011)=(14,9).(11)=E9.B得到结果:将二进制11101001.1011转换为十六进制为E9.B例2:将101011.101转换为十六进制(0010,1011).(1010)=(2,11).(12)=2B.A因此得到结果:将二进制101011.101转换为十六进制为2B.A2、将十六进制转换为二进制方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。例:将十六进制6E.2转换为二进制数6E.2=(0110,1110).(0010)=01101110.0010因此得到结果:将十六进制6E.2转换为二进制为01101110.0010即110110.001四、八进制与十六进制的转换1、 八进制转换为十六进制方法:一般不能互相直接转换,一般是将八进制(或十六进制)转换为二进制,然后再将二进制转换为十六进制(或八进制),小数点位置不变。那么相应的转换请参照上面二进制与八进制的转换和二进制与十六进制的转换。2、十六进制转换为八进制(同上)五、八进制与十进制的转换1、八进制转换为十进制方法:按权相加法,即将八进制每位上的数乘以位权,然后相加之和即是十进制数。例1:设有一个八进制数:1507,转换为十进制为:  用竖式表示:  1507换算成十进制。  第0位 7 x 8^0 = 7  第1位 0 x 8^1 = 0  第2位 5 x 8^2 = 320  第3位 1 x 8^3 = 512  --------------------------  (1507)O=(839)D  用横式直接计算:  7*8^0 + 0*8^1 + 5*8^2 + 1*8^3 = (839)D  结果是,八进制数1507 转换成十进制数为 839例2:将八进制数67.35转换为十进制(67.35)8=(6*8^1+7*8^0).(3*8^-1+5*8^-2)     =(48+7).(0.375+0.078125)=55.453125结果是,八进制数67.35 转换成十进制数为 55.4531252、十进制转换为八进制十进制转换成八进制有两种方法:(1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制(2)直接法:前面我们讲过,八进制是由二进制衍生而来的,因此我们可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下:①整数部分方法:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。②小数部分方法:乘8取整法,即将小数部分乘以8,然后取整数部分,剩下的小数部分继续乘以8,然后取整数部分,剩下的小数部分又乘以8,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,暂取个名字叫3舍4入。例1:将十进制数796.703125转换为八进制数解:先将这个数字分为整数部分796和小数部分0.703125(1)整数部分796第一步,将796除以8,商99,余数为4。第二步,将商99除以8,商12余数为3。第三步,将商12除以8,商1余数为4。第四步,将商1除以8,商0余数为1。第五步,读数,因为最后一位是经过多次除以8才得到的,因此它是最高位,读数字从最后的余数向前读,得结果(1434)8。(2)小数部分(0.703125)0.703125*8=5.625…5;0.625*8=5…5得结果(0.55)8因此,得到结果十进制796.703125转换八进制为1434.55上面的方法大家可以验证一下,你可以先将十进制转换,然后在转换为八进制,这样看得到的结果是否一样六、十六进制与十进制的转换1、十六进制转换为十进制假设有一个十六进数 2AF5, 那么如何换算成10进制呢?用竖式计算:2AF5换算成10进制:第0位: 5 * 16^0 = 5第1位: F * 16^1 = 240第2位: A * 16^2 = 2560第3位: 2 * 16^3 = 8192 +-------------------------------------10997直接计算就是:5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997(别忘了,在上面的计算中,A表示10,而F表示15)2、十进制转换为十六进制10进制数转换成16进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成16。就是大于15小于256的十进制数除以16为的值为十位的十六进制数,其余数为个位的十六进制数,没有余数则个位为“0”。例:将(61)10转换为十六进制。61/16=3。。。13“3”作十位数,13转成D为个位数,得结果(61)10=(3D)16。本文介绍了二进制、十进制、八进制、十六进制四种进制之间相互的转换,大家在转换的时候要注意转换的方法,以及步骤,特别是十进制转换为期于三种进制之间,要分为整数部分和小数部分:其他进制转换到十进制,全部是各进制按权数的n-1次方展开并求和;十进制转换为其他进制,则是“除 各进制数基数 取余法”,直至商为零,然后将所有余数从后向前排列。进制转换附录附录一:常用进制数 制 基 数 码 尾 标十六进制 16 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.FA.B.C.D.E.F分别代表10.11.12.13.14.15 H(Hexadecimal)十进制 10 0.1.2.3.4.5.6.7.8.9 D(Decimal)八进制 8 0.1.2.3.4.5.6.7 O(Octal)二进制 2 0.1 B(Binary)附录二:各进制基数、符号及示例十进制数制系统十进制数制系统包括 10 个数字:0、1、2、3、4、5、6、7、8、9基为:10逢十进一,如3+7=10,20+80=100二进制数制系统计算机中使用二进制表示数据二进制包括两个符号:0和1二进制逢二进一:(1+1)2=(10)2二进制的基为2示例:1000101100101101二进制与遵循十进制数遵循一样的运算规则,但显得比十进制更简单。例如:(1)加法:0+0=0 0+1=1 1+0=1 1+1=0(2)减法:0-0=0 1-1=01-0=1 0-1=1(3)乘法:0*0=0 0*1=01*0=0 1*1=1(4)除法:0/1=0 1/1=1,除数不能为0八进制数制系统用于缩短二进制的数字长度八进制基是8,使用的符号为:0、1、2、3、4、5、6、7逢八进一,即(7+1)8=(10)8十六进制数制系统十六进制数制系统的基是 16十进制:0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15十六进制:0、1、2、3、4、5、6、7、8、9、A、 B、 C、D、 E、 F逢十六进一,如 (8+8)16=(10)16示例:12B、00FFFF计算机中以数量表示色彩各数制的权各种数制中不同位的权为“基的n-1次方(n为所在的位数)”。如:十进制中,各位的权为10n-1二进制中,各位的权为2n-1八进制中,各位的权为8n-1十六进制中,各位的权为16n-1附录三:进制转换规律十进制数 二进制数 八进制数 十六进制 一些对应规律0 0 0 0 (20)10=(1)2(21)10=(10)2(22)10=(100)2(2n)=(1…0)n 2八进制的一个数字与一个3位的二进制数对应。十六进制的一个数字与一个4位的二进制数对应。1(20) 1 1 12(21) 10 2 23 11 3 34(22) 100 4 45 101 5 56 110 6 67 111 7 78(23) 1000 10 89 1001 11 910 1010 12 A11 1011 13 B12 1100 14 C13 1101 15 D14 1110 16 E15 1111 17 F16(24) 10000 20 1017 10001 21 1132(25) 100000 40 2064(26) 1000000 100 40128(27) 10000000 200 80256(28) 100000000 400 100512(29) 1000000000 1000 2001024(210) 10000000000(1K) 2000 400220 (1M) 4000000 100000230 (1G) 10000000000 40000000附录四:8421法数制转换是一个非常重要的知识点,特别是二进制和十进制的转换。虽然有“按权相加”(二进制转换为十进制)和“除二取余法”(十进制转换为二进制)二种方法。但这两种方法都太繁琐,上机考核根本不允许带纸和笔,这给解答这类题型造成了不小的麻烦。根据多年的经验,总结出了一个简单快捷的方法,取名“8421”法:根据二进制的原则“逢二进一”,我们把2的n次方列出分别是:20=1  21=2  22=4  23=8 24=16 25=32  26=64……“8421”法的原理说白了就是一种凑数法,按2的n次方的值列出,根据不同的情况进行“凑数”。一、对于二进制转换成十进制数例如:二进制数1010转换成十进制数        8  4  2  1   二进制数: 1  0  1  0 (结果为凡是1对应的数相加:8+2=10)例1:110转换成十进制数        8  4  2  1          1  1  0  (结果为凡是1对应的数相加:4+2=6)例2:11100转换成十进制数      16  8  4  2  1      1   1  1  0  0  (结果为凡是1对应的数相加:16+8+4=28)二、对于十进制转换成二进制数例如:十进制数不胜数10转换成二进制数       8  4  2  1     (因为10=8+2)       1  0  1  0 (故凡是凑到的8和2下面都是1,没有凑到的为0)例3:十进制数6转换成二进制数       8  4  2  1     (因为6=4+2)       0  1  1  0 (故凡是凑到的4和2下面都是1,没有凑到的为0)例4:十进制数28转换成二进制数    16 8  4  2  1      (因为16+4+8=28)    1   1  1  0  0   (凑到的为1,没有凑到的为0)当然,这种方法对数值比较小的数要容易的多,但对于一般的考试已经是足以应付了。另外,也可以采用Windows下附件里的计算器,把查看菜单选为“科学型”。这样,不管是多么复杂的数值转换都是易如反掌了。附录五:数字的负次方首先,2的2次方×2的3次方=2的(2+3)次方=2的5次方这个我相信你应该学过那么,扩展下去:2的2次方×2的-2次方=2的(2-2)次方=2的0次方=1。任何非0数的0次方都是1,这个我不知道你有没有学过,如果没学过,那今天我教过你了一个非零数x,它的倒数就是1/x,一个非零数跟它的倒数的乘积是1,也就是说x•1/x=1那么,既然 2的2次方×2的-2次方=1,也就是说:2的-2次方是2的2次方的倒数,2的-n次方也就是2的n次方的倒数。同样的道理,任意非0数字a的-n次方都是a的n次方的倒数。因此我们可以得到:a的-n次方=1/a的n次方 (a为任意非0的数)如果看懂了,自己算出你问的那几个数,跟5楼的大魔法师对一下标准答案。都对了的话,下面给你解释数字的分数次方.要知道,(2的2次方)的3次方=2的(2×3)次方=2的6次方那么,(2的1/2次方)的2次方=2的(1/2×2)次方=2的1次方=2一个数的平方等于2,那么这个数是根号2(或负根号2)但是,一个正数的任意次方一定是正数,所以 2的1/2次方=根号2同样的道理,(2的1/3次方)的3次方=2的(1/3×3)次方=2的1次方=3一个数的三次方等于2,那么这个数是3次根号2也就是说 2的1/3次方=3次根号2推而广之, a的1/n次方=n次根号a附录六:负数的问题将 -617 用八进制和十六进制(补码)表示:答案: (-617)10=(176627)8=(fd97)16原理:任何数在内存中都是以二进制补码的形式存放的.正数的补码就是其本身的二进制.负数的补码是其绝对值的二进制的反码加+1.1:-617的绝对值:617其二进制0000001001101001(整型16位)2: 反码 :1111 1101 1001 0110.3:加1后 :1111 1101 1001 0111.转8进制,3位一体:即:001 111 110 110 010 1111 7 6 6 2 7转16进制,4位一体:即:1111 1101 1001 0111F D 9 71、权位十进制权位12345=1*104+2*103+3*102+4*101+5*100↓ ↓ ↓ ↓ ↓10000 1000 100 10 1 ←权位二进制权位10010=1*24+0*23+0*22+1*21+0*20↓ ↓ ↓ ↓ ↓16 8 4 2 1 ←权位小数点之后是负指数:2-1、2-2…小数点标记只是“个位”(20)的位置。

原创粉丝点击