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

1.2.1 考点精讲

1.数制转换

(1) R 进制数转换成十进制数

R 进制数转换成十进制数通常使用按权展开法。具体操作方式为:将 R 进制数的每一位数值用 R k 形式表示,即幂的底数是 R ,指数为 k k 与该位和小数点之间的距离有关。当该位位于小数点左边, k 值是该位和小数点之间数码的个数,而当该位位于小数点右边, k 值是负值,其绝对值是该位和小数点之间数码的个数加 1。

例如,二进制数l0101.01 的值可计算如下:

l0101.01=1×2 4 +1×2 2 +1×2 0 +1×2 2

按照上面的表示法,即可计算出 R 进制数十进制的值。

(2)十进制数转换为 R 进制数

最常用的是“除以 R 取余法”。例如,将十进制数 85 转换为二进制数:

将所得的余数从低位到高位排列(1010101) 2 就是 85 的二进制数。

(3)二进制数与八进制数、十六进制数之间的转换

● 二进制数转八进制数:将每3个二进制数转换为八进制数;

● 二进制数转十六进制数:将每4个二进制数转换为十六进制数;

● 八进制数转二进制数:将每个八进制数转换为3位的二进制数;

● 十六进制数转二进制数:将每个十六进制数转换为4位的二进制数。

上面的转换都是以小数点作为计算数码个数的起点。八进制数和十六进制数转换可先转换为二进制数,然后再转换为目标进制。

2.原码、反码、补码、移码

在计算机中,数据编码方式可以有多种,最为常见的有原码、反码、补码、移码。一个正数的原码、补码、反码是相同的,负数则不同。

(1)原码

将最高位用作符号位(0 表示正数,1 表示负数),其余各位代表数值本身的绝对值的表示形式。这种方式是最容易理解的。

例如,+1 的原码是 0000 0001,–1 的原码是 1000 0001。

但是直接使用原码在计算时却会有麻烦,比如(1) 10 +(–1) 10 = 0,如果直接使用原码则:

(0000 0001) 2 +(1000 0001) 2 =(1000 0010) 2

这样计算的结果是–2,也就是说,使用原码直接参与计算可能会得到错误的结果。所以,原码的符号位不能直接参与计算,必须和其他位分开,这样会增加硬件的开销和复杂性。

(2)反码

正数的反码与原码相同。负数的反码符号位为 1,其余各位为该数绝对值的原码按位取反。这个取反的过程使得这种编码称为“反码”。

例如,–1 的反码:1111 1110。

同样进行上面的加法,使用反码的结果是:

(0000 0001) 2 + (1111 1110) 2 = (1111 1111) 2

这样的结果是负 0,而在人们普遍的观念中,0 是不分正负的。反码的符号位可以直接参与计算,而且减法也可以转换为加法计算。

(3)补码

正数的补码与原码相同。负数的补码是该数的反码加 1,这个加 1 就是“补”。

例如,–1 的补码:1111 1110+1 = 1111 1111。

再次做加法是这样的:

(0000 0001) 2 + (1111 1111) 2 = (0000 0000) 2

直接使用补码进行计算的结果是正确的。

对一个补码表示的数,要计算其原码,只要对它再次求补,可得该数的原码。

由于补码能使符号位与有效值部分一起参加运算,从而简化了运算规则,同时它也使减法运算转换为加法运算,进一步简化计算机中运算器的电路,这使得在大部分计算机系统中,数据都使用补码表示。

(4)移码

移码是对补码的符号位取反得到的一种编码。移码只用于表示浮点数的阶码,所以只用于整数。

例如,−1 的移码为:0111 1111。

3.浮点数计算

在数学中,要表示一个很大的数时,我们常常使用一种称为科学计数法的方式:

N = M * R e

其中 M 称为尾数, e 是指数, R 为基数。

浮点数就是使用这种方法来表示大范围的数,其中指数一般是 2、8、16。而且对于特定机器而言,指数是固定不变的,所以在浮点数中指数并不出现。从这个表达式可以看出:浮点数表示的精度取决于尾数的宽度,范围取决于基数的大小和指数的宽度。

浮点数的运算主要有 3 个步骤:对阶、尾数计数、结果格式化。

(1)对阶

首先计算两个数的指数差,把指数小的向指数大的对齐,并将尾数右移指数差个位数,这样两个浮点数就完成了对阶的操作。可以看出,对阶的过程可能使得指数小的浮点数失去一些有效位。如果两个浮点数阶数相差很大,大于指数小的浮点数的尾数宽度,那么对阶后那个浮点数的尾数就变成了 0,即当作机器零处理了。

(2)尾数计算

对阶完成后,两个浮点数尾数就如同定点数,计算过程同定点数计算。

(3)结果格式化

尾数计算后,可能会产生溢出,此时将尾数右移,同时指数加 1,如果指数加 1 后发生了溢出,则表示两个浮点数的运算发生了溢出。

如果尾数计算没有溢出,则尾数不断左移,同时指数减 1,直到尾数为格式化数。如果这个过程中,指数小于机器能表达的最小数,则将结果置“机器零”,这种情况称为下溢。 O183URh2CBMccyx74ebjeoCWA+QuoA9yEdXvE3BWmOwLERVizJpK+XQBX5uleUId

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