《深入理解计算机网络》习题集

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


第一章补充内容

1.4.5定点数与浮点数

计算机在处理实数时遇到了一个表示方法的难题,因为在计算机内存,或者叫寄存器中是没有专门的小数点位的,而在实际运算过程中却往往又是包括小数点的小数。如果某种数据编码约定实数的小数点固定在某一个位上,则这个数称之为“定点数”(Fixed Point Number)。相反,如果某种编码约定实数的小数点位置是可变的,则这个数称之为“浮点数”(FloatingPoint Number)。但是要注意的是,在寄存器中小数点的位置是隐含的,没有专门的小数点位。

1. 定点数

对于定点数来说,如有一种编码是用4位来表示实数的,并且约定小数点在中间位置,则可以得出这种编码所能表示的最大整数部分和小数部分均为99(假设用十进制表示)。显然定点数这样的约定限制了编码所能表示数的范围。

根据小数点的位置的不同,定点数又分为“定点整数”和“定点小数”两种。如果小数点在有效数值部分最低位之后,这样的数称之为“定点整数”(纯整数),如1110101.(其实这里的小数点在寄存器中是没有标注的,是隐含的)。但要注意,计算机中的机器数都是带符号的,所以最高位都是符号位,不是实际的数值位。正因如此,这里的“1110101”所对应的数是-53,而不是+117。

如果小数点位置在符号位之后、有效数值部分最高位之前小数点在最高有效数值位之前(这里的小数点在寄存器中也是隐含的,没有小数点专门的位),这样的数称之“定点小数”(纯小数),如0.1010101(注意整数部分仅一位,而且是符号位,对应为01010101)。

当然还可以既有整数部分,又有小数部分的定点数(当然,此时不能直接说它们是“定点整数”,也不能说它们是“定点小数”)。以人民币为例,我们日常经常看到的¥125.10,¥873.25之类的数就是一个定点数,约定小数点后面有两位小数,用来表示角与分。

【经验之谈】这时可能就有读者问,没有标点符号位,那计算机怎么确定数值的大小?这就是前面说到的“约定”了。这里的“约定”是由计算机程序指定的,一种编码的二进位数是固定的,如果约定了小数点的位置,则这里面的数的小数点位置就确定了,计算机就可以确定不同数值的大小了。如某种编码用4个二进制位表示,且约定小数点位于最后一位前,最则可以确定诸如1101、0100、1001等这些数所对应的十进制值分别为-2.5、+2.0、-0.5(注意,最高位为符号位)。

根据前面的介绍,我们可以很容易地得出定点整数的表示范围是:1≤ | x | ≤ 2n - 1,定点小数的表示范围是:2- n ≤ | x | ≤ 1 - 2- n,“ | x |”为定点

的绝对值,n是编码所采用的位数。

对于定点数,如果机器字长为n,则各种码制所表示的带符号数的取值范围如表1-4所示。




当数据小于定点数能表示的最小值时,计算机将它们作0处理,称为“下溢”;大于定点数能表示的


相关文档
最新文档