进制间互转的概述及其算法

一、十进制与二进制之间的转换
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 8
2 、八进制转换为二进制
计算八进制转换为二进制:首先,将八进制按照从左到右,每位展开为三位,小数点位置不变;然后,将每位上转换成二进制数按顺序排列;最后,就得到了八进制转换成二进制的数字。
例:将八进制数( 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 . A
2 、将十六进制转换为二进制
方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。
例:将十六进制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.453125
2 、十进制转换为八进制
十进制转换成八进制有两种方法:
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 . F
A.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  1
2 21 10  2  2
3  11  3  3
4 22 100  4  4
5  101  5  5
6  110  6  6
7  111  7  7
8 23 1000  10  8
9  1001  11  9
10  1010  12  A
11  1011  13  B
12  1100  14  C
13  1101  15  D
14  1110  16  E
15  1111  17  F
16 24 10000  20  10
17  10001  21  11
32 25 100000  40  20
64 26 1000000  100  40
128 27 10000000  200  80
256 28 100000000  400  100
512 29 1000000000  1000  200
1024 210 10000000000 (1K) 2000  400
220  (1M) 4000000  100000
230  (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  111
1  7  6  6  2  7
16 进制, 4 位一体:
即: 1111  1101  1001  0111
F D 9  7
1 、权位
十进制权位
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 )的位置。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值