购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 计算机中的数制转换和运算

通过计算机,人们可以获得和处理各式各样的数据信息,比如文字、声音、视频、图片等,而这些精彩纷呈的信息在计算机中是如何存放的呢?无论是数值信息还是非数值信息(字符、文字、图形、声音等),在计算机中都是采用二进制进行存储和处理的。本节主要介绍计算机中的常用数制、数制之间的转换以及常用的编码。

2.1.1 计算机的数制

数制就是表示数的方法,指用一组固定的符号和统一的规则来表示数值。在计数的过程中采用进位的方法称为进位计数制。在日常生活中,最常用到的就是十进制,其实,除了十进制数制以外,还有很多进位计数制,比如,以 12 个月计为一年的十二进制;以 60 分钟计为 1 小时的六十进制;以 24 小时计为 1 天的二十四进制;计算机中的二进制,等等。

为什么计算机中要采用二进制,而不采用人类在实际生活中使用的十进制呢?主要有以下原因:

①二进制只包含 0 和 1 两个数值,计算机中的电子组件一般都只有两种稳定的工作状态,用高、低两个电位表示“1”和“0”在物理上最容易实现。

②两个二进制数的和、积运算组合各有三种,运算规则简单,有利于简化计算机内部结构,提高运算速度。

③二进制只有两个数码,正好与逻辑代数中的“真”和“假”相吻合。

④二进制与十进制数易于互相转换。

⑤用二进制表示数据具有抗干扰能力强,可靠性高。

这样,输入计算机的十进制会被转换成二进制进行计算,计算后所得的结果由操作系统再次转换成十进制输出。

1.数制的基本概念

对于任意的进位计数制 R 都包括数码、基数、位权三个要素。

(1)数码

数码是数制中用来表示基本数值大小的不同数字符号。例如,十进制有 10 个数码:0、1、2、3、4、5、6、7、8、9;二进制有两个数码:0、1;八进制有八个数码:0、1、2、3、4、5、6、7;十六进制有 16 个数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

(2)基数

基数表示任何一个进位计数制中所包含的数码的个数,用 R 表示。例如:

十进制:基数为 R =10。

二进制:基数为 R =2。

八进制:基数为 R =8。

十六进制:基数为 R =16。

(3)位权

位权表示数制中每一位上的数码所代表的实际值的大小。数字的大小除了与其本身的大小有关外,还与其所处的位置有关,即一个数的每个位置的基准值就称为位权,用 R i 表示。例如,十进制的千分位的位权是 1000(10 3 ),百分位的位权是 100(10 2 ),十分位的位权是 10(10 1 ),个位的位权是 1(10 0 );二进制数 1111,从左向右的位权值分别是,第一个 1 的位权是 8(2 3 ),第二个 1 的位权是 4(2 2 ),第三个 1 的位权是 2(2 1 ),第四个 1 的位权是 1(2 0 )。

(4)按位展开求和

任何一个数 R 都可以表示成数码本身的值与其所在位置的位权的乘积之和。例如:

十进制:(349.48) 10 =3×10 2 +4×10 1 +9×10 0 +4×10 -1 +8×10 -2

二进制:(100101.01) 2 =1×2 5 +0×2 4 +0×2 3 +1×2 2 +0×2 1 +1×2 0 +0×2 -1 +1×2 -2

由此,可得数 R 按位权展开求和的通式为:

N 代表任意一个数值; D 代表每一位上的数码; R 代表位权; m 代表整数位数; n 代表小数位数。

2.常用的进位计数制

在生产实践和日常生活中有很多表示数的方法,下面对常见的十进制数、二进制数、八进制数、十六进制数进行详细的介绍。

(1)十进制数

十进制数(decimal)逢十进一,表示方法为:如(234.56) 10 或 234.56D,也可直接写成 234.56。

按位权展开为:(234.56) 10 =2×10 2 +3×10 1 +4×10 0 +5×10 -1 +6×10 -2

(2)二进制数

二进制数(binary)逢二进一,表示方法为:如(110.01) 2 或 110.01B。

按位权展开为:(110.01) 2 =1×2 2 +1×2 1 +0×2 0 +0×2 -1 +1×2 -2

(3)八进制数

八进制数(octal)逢八进一,表示方法为:如(437.26) 8 或 437.26O。

按位权展开为:(437.26) 8 =4×8 2 +3×8 1 +7×8 0 +2×8 -1 +6×8 -2

(4)十六进制数

十六进制数(hexadecimal),逢十六进一,表示方法为:如(A3201.24) 16 或A3201.24H。

按位权展开为:(A3201.24) 16 =10×16 4 +3×16 3 +2×16 2 +0×16 1 +1×16 0 +2×16 -1 +4×16 -2

2.1.2 各数制之间的转换

人们日常生活中采用的是十进制,而计算机中采用的是二进制,而一个数如果用二进制表示的话会比较长,且容易出错。因此,在计算机中除了二进制外,为了便于书写,还常常用到八进制和十六进制。这些进制之间存在一定的联系,即各进制之间可以相互进行转换。了解不同进制数之间的转换是必要的。

1. R 进制数 (二进制、八进制、十六进制) 转换为十进制

计算方法是按位权展开求和,即将每位数码乘以相应的权值并累加。

1.1 】将二进制数(110.11) 2 转换成十进制数。

】(110.01) 2 =1×2 2 +1×2 1 +0×2 0 +0×2 -1 +1×2 -2 =4 +2 +0 +0 +0.25=6.25

1.2 】将八进制数(437.2) 8 转换成十进制数。

】(437.2) 8 =4×8 2 +3×8 1 +7×8 0 +2×8 -1 =256 +24 +7 +0.25=287.25

1.3 】将十六进制数(A41.5) 16 转换成十进制数。

】(A41.5) 16 =10×16 2 +4×16 1 +1×16 0 +5×16 -1 =2 560 +64 +1 +0.312 5=2 625.312 5

2.十进制转换为 R 进制数 (二进制、八进制、十六进制)

通常,一个十进制数包括了整数部分和小数部分。而整数部分和小数部分在转换为 R 进制数时分别遵守不同的转换规则。下面以一个十进制小数转换成二进制数为例,分别介绍整数和小数部分的转换方法。

(1)整数部分

采用“除以 R 取余法”。具体方法是:用十进制数的整数部分除以 2,然后将余数取出,作为二进制的数码,用所得的商继续除以 2,直到商为 0 为止。每次所得的余数即为二进制整数部分的各个数码,最先求得的余数为最低位,最后求得的余数为最高位,口诀为“除以 R 取余、倒读”(倒读是自下而上读)。

(2)小数部分

采用“乘以 R 取整法”。具体方法是:用十进制数的小数部分乘以 2,然后将所得的积的整数部分取出,作为二进制的数码,用所得的积的小数部分继续乘以 2,直到积为 0 或达到有效精度为止。最先求得的整数为最高位(最靠近小数点),最后求得的整数为最低位,口诀为“乘以 R 取整、正读”(正读是自上而下读)。

1.4 】将(59.67) 10 转换成二进制数(取 4 位小数)。

】先求整数部分:

所以(59) 10 =(111011) 2

再求小数部分:

所以(0.67) 10 =(0.527) 8

由此可得:(59.67) 10 =(111011.1010) 2

提示:

1.小数部分每次乘 2 后,取得的整数部分可能是 0 或 1。如果整数部分是 0,也应将其取出作为一位二进制数码。

2.并不是每一个十进制小数都能完全精确地转换成二进制小数,也就是说,不能用有限个二进制数字来精确地表示一个十进制小数。如果无法转换为精确小数,就根据精度要求截取到某一位小数即可。所以,将一个十进制小数转换成二进制小数通常只能得到近似表示。

1.5 】将(159.67) 10 转换成八进制数(取 3 位小数)。

】先求整数部分:

所以(159) 10 =(237) 8

再求小数部分:

所以(0.67) 10 =(0.527) 8

通过以上例题可以看出,对于一个十进制小数转换成任意的 R 进制数,需要将整数部分和小数部分分别转换,然后将两部分所得结果用小数点连起来即可。

3.二进制与八进制、十六进制的转换

用二进制编码存在这样的规律: n 位二进制最多可以表示 2 n 种状态。因为,2 3 =8,2 4 =16,所以 3位二进制数对应 1 位八进制数,4 位二进制数对应 1 位十六进制数。二进制数转换为八进制、十六进制数比转换为十进制数容易得多,因此,常用八进制、十六进制数来表示二进制数。表 2-1 列出了它们之间的对应关系。

表 2-1 十进制、二进制、八进制和十六进制数之间的对应关系

(1)二进制转换为八进制、十六进制数

转换方法为:将二进制数以小数点为中心,分别向左、向右分组,如果要转换成八进制数,每 3 位二进制为一组,一组不足 3 位的数在两边加“0”补足;转换成十六进制数,每 4 位二进制为一组,一组不足 4 位的数在两边加“0”补足,最后将每组二进制数用八(或十六)进制数代替即可。

1.6 】将二进制数(1000101111.110011) 2 转换为八进制数。

】将二进制数的整数部分向左 3 个为一组,不足 3 位的在前面补“0”;小数部分向右 3 个为一组,不足 3 位的在后面补“0”。

所以(1000101111.110011) 2 =(1057.63)8

1.7 】将二进制数(1000101111.110011) 2 转换为十六进制数。

】将二进制数的整数部分向左 4 个为一组,不足 4 位的在前面补“0”;小数部分向右 4 个为一组,不足 4 位的在后面补“0”。

所以(1000101111.11001100) 2 =(22F.CC) 16

(2)八进制、十六进制转换为二进制数

转换方法为:将每一位八(或十六)进制数用等值的 3(或 4)位二进制数代替即可。

1.8 】将八进制数(1605.42) 8 转换为二进制数。

所以(1605.42) 8 =(1110000101.10001) 2

1.9 】将十六进制数(53C.F8) 16 转换为二进制数。

所以(53C.F8) 16 =(10100111100.11111) 2

2.1.3 二进制数的运算

1.二进制数的算术运算

二进制数的算术运算包括加、减、乘、除四则运算,基本运算是加法。

(1)二进制数的加法运算

按照“逢二进一”的规则,二进制的加法法则为 0+0=0;0+1=1+0=1;1+1=10(向高位进位)。

1.10 】完成(110) 2 和(100) 2 的加法运算。

即(110) 2 +(100) 2 =(1010) 2

(2)二进制数的减法运算

按照“借一有二”的规则,二进制的减法法则为 0-0=1-1=0;1-0=1;0-1=1(向高位借位)。

1.11 】完成(1110) 2 和(1011) 2 的减法运算。

即(1110) 2 -(1011) 2 =(11) 2

(3)二进制数的乘法运算

二进制数乘法可参照十进制数乘法计算,二进制的乘法法则为 0×0=0;0×1=1×0=0;1×1=1。

1.12 】完成(110) 2 和(100) 2 的乘法运算。

即(110) 2 ×(100) 2 =(11000) 2

(4)二进制数的除法运算

二进制数除法可参照十进制数除法计算,二进制的除法法则为 0÷0=0;0÷1=0;1÷1=1;1÷0(无意义)。

1.13 】完成(11100) 2 和(101) 2 的除法运算。

即(11100) 2 ÷(101) 2 =(101) 2

2.二进制数的逻辑运算

逻辑运算是对因果关系进行分析,得出真假值的运算过程,是一种无符号的二进制运算。逻辑关系是一种二值逻辑,可以用二进制 1 或 0 来表示,1 表示“是”“真”,0 表示“否”“假”。

逻辑运算包括 3 种基本运算:逻辑与(又称为逻辑乘法)、逻辑或(又称为逻辑加法)、逻辑非(又称为逻辑否定)。此外,还有逻辑异或等更复杂的逻辑运算。

(1)“与”运算

逻辑与表示当且仅当参与运算的两个逻辑变量都为真时,结果为真。逻辑与的运算符常用∧、×或AND表示。逻辑与的运算法则为:1∧1=1;0∧1=0;1∧0=0;0∧0=0。

1.14 】完成 11100 和 10110 的逻辑与运算。

(2)“或”运算

逻辑或表示参与运算的两个逻辑变量至少有一个为真时,结果为真;逻辑或的运算符常用∨、+或OR表示。逻辑或的运算法则为:1∨1=1;0∨1=1;1∨0=1;0∨0=0。

1.15 】完成 11100 和 10110 的逻辑或运算。

(3)“非”运算

逻辑表示对逻辑变量求反,即当逻辑变量为真时,结果为 0,否则为 1。逻辑非的运算法则为: =0; =1。

1.16 】完成 11100 的逻辑非运算。 Ho7k2PLlVcUFo0z8rx6hMRzBLRYEerGvvrfybcr/Ppoh+G2uOP8BpTFhdnECsMJ/

点击中间区域
呼出菜单
上一章
目录
下一章
×