1. 二进制数与十进制数之间的转换
⑴二进制数转换成十进制数
[ 例 ](11111001001)2 =1 × 210 +1 × 29 +1 × 28 +1 × 27 +1 × 26 +0 × 25 +0 × 24
+1 × 23 +0 × 22 +0 × 21 +1 × 20
=(1993)10
(1011.101)2 =1 × 23 +0 × 22 +1 × 21 +1 × 20 +1 × 2-1 +0 × 2-2 +1 × 2-3 =(11.625)10
⑵十进制数转换成二进制数
①十进制整数转换成二进制整数 ( 除基 (2) 取余法 )
[ 例 ]
2 1993
2 996 ………… 1 ………… 0 位 低位二进制整数
2 498 ………… 0 ………… 1 位
2 249 ………… 0 ………… 2 位
2 124 ………… 1 ………… 3 位
2 62 ………… 0 ………… 4 位
2 31 ………… 0 ………… 5 位
2 15 ………… 1 ………… 6 位
2 7 ………… 1 ………… 7 位
2 3 ………… 1 ………… 8 位
2 1 ………… 1 ………… 9 位
0 ………… 1 ………… 10 位 高 位二进制整数
注意 , 除到 0 商时结束 2 除 步 , 回写 ( 从 高位回到低位 ) 余数便是所求二进制数 , 即 :(1993)10 =(11111001001)2
②十进制纯小数转换成二进制纯小数 ( 乘基 (2) 取整法 )
[ 例 ]
0.625
2
2-1 位… 1. 250 高 位二进制小数
2
2-2 位… 0. 500
2
2-3 位 1.000 低位二 进制小数
纯小数位被全乘为 0 时 , 得准确二进制纯小数 ; 否 则 ( 纯小数位永远被 2 乘不为全是 0) 只 能化成满足某一精确度要求的二进制小数的近似值。例中 (0.625)10 =(0.101)2 是 准确值 , 其中 101 是 顺写的积整位 ( 从高位到低位 ) 数。
2. 二进制数与八进制数之间的转换
⑴二进制数转换成八进制数 ( 三位分组转换法 , 即合三为一法 )
[ 例 ] 将 二进制数 11010001011.11011 用三位分组转换的方法转换 成八进制数。
①从小数点起对整数位向左 , 对小数位向右三位分一组 , 不足三位时 , 在 最外端加补 0 位 , 使 之都成为三位:
( 填入 0 位 )0 → 011 010 001 011.110 110 ← 0( 填入 0 位 )
②将三位一组二进制数分别转换成八进制数 , 并按原位 置次序写成新的记数数 , 即得与原数等值的八进制数 :3213.66
③从而有 :(11010001011.11011)2 =(3213.66)8
所以这样做 , 是因为八进制数的不同数字恰是 8 个三位二进制数。
⑵八进制数转换成二进制数
将八进制数转换成二进制数时 , 正是上述方法的逆 ( 一分为三法 ) 。 只是注意要在转换成二进制数后 , 将相当于被加补的 0 位上的那些 0 略 去 , 这些 0 在 二进制记数中是可有可无的 , 它们并不影响记数值。
[ 例 ](3213.66)8 =(011 010 001 011.110 110)2 =(11010001011.11011)2
八进制数与十进制数之间的转换 , 我们至少可以这样 做:
①通过二进制数作中间过渡 , 将它们互转:
(17)10 =(10001)2 =(010 001)2 =(21)8
②用“除基 (8) 取余法”将十进制整数转换成八进制 整数 , 用“乘基 (8) 取 整法“将十进制纯小数转换成八进制纯小数 ; 至于将八进制数转换成十进制 数 , 只要“按位乘基幂”即可:
[ 例 ] ①由 8 17 ②∵ 0.6875
8
8 2 …… 1( 低位 ) ( 高 位 ) 5. 500
0 8
…… 2( 高位 ) ( 低 位 ) 4.0000
得 (17)10 =(21)8 ∴ (0.6875)10 =(0.54)8
③于是 ,(17.6875)10 =(21.54)8
④而 (21.54)8 =2 × 81 +1 × 80 +5 × 8-1 +4 × 8-2 ( 按 位乘基幂 )
=16+1+5 × 0.125+4 × 0.015625=(17.6875)10
3. 二进制数与十六进制数之间的转换
⑴二进制数转换成十六进制数 ( 四位分组转换法 , 即合四为一法 )
[ 例 ](101101111100011.110101111)2 =(0101 1011 1110 0011.1101 0111 1000)2
=(5BE3.D78)16
⑵十六进制数转换成二进制数 ( 四位分组转换法的逆方 法 , 即一分为四法 )
[ 例 ](5BE3.D78)16 =(0101 1011 1110 0011.1101 0111 1000)2
=(101101111100011.110101111)2
十六进制数与十进制数之间的转换和八进制数与十进制数之间的转换的方法完全相同 , 对 基 16 操作起来也很容易 , 这里就不再赘述了。
需要强调的是:计算机能够处理的任何信息 , 其数据形 式在计算机内部都以 0 和 1 的方式进行存储。任何信息要想存入计算机 , 都 必须经过一个转换装置 , 先把计算机要处理的信息转换成仅由 0 和 1 组成的 二进制代码之后再存入计算机。要把存储于计算机内的各种信息输出来 , 也 必须再经过转换装置把二进制信息转换成人们所熟悉的和常用的符号。这些工作是由计算机自动完成的 , 并 不需要用户干预。
计算机所能处理和存储的信息是大量的 , 其软件系统要 适应发展的需要 , 对表示信息的二进制数码 ( 代码 ) 必须进 行统一的编码 , 以保证计算机的通用性 , 否则就会造成在互换和交流时的混乱。
通常 , 将十进制数字、英文字母和一些专用符号等数据 都用一定长度的二进制数来表示 , 称作编码 ; 用编码表示的数据就称代码。使用计算机时 , 程 序、控制命令、数据等在其内部 ( 机器级上 ) 一律都用代码。现在 , 已 有许多种编码方法 , 但被普遍使用的是下述的几种方法。