计算机中数值数据的表示与处理
发布时间: 2025-08-14 01:36:31 阅读量: 1 订阅数: 8 


计算机系统与网络通信精要
### 计算机中数值数据的表示与处理
在计算机领域,数值数据的表示和处理是基础且关键的部分。本文将深入探讨浮点数在计算机中的表示、运算以及相关标准。
#### 1. 浮点数的基本表示
为了更好地理解浮点数的表示规则,我们来看一个具体的例子。假设要表示的数是 -0.0000003579,它可以表示为 -0.35790 × 10⁻⁶,其中包含了尾数的符号、小数点位置、尾数、底数和指数等部分。
在计算机中,浮点数的存储和处理采用“标准”的预定义格式。出于实际考虑,通常选择 8 位的倍数作为字长,这有助于简化操作和算术运算。对于整数,整个字用于表示整数的大小和符号;而对于浮点数,字必须进行划分,一部分用于存储指数及其符号,其余部分用于存储尾数及其符号。指数的底数和隐含的二进制小数点位置是格式的一部分,无需存储。
例如,一个标准字包含七个十进制数字和一个符号位,格式为 S M M M M M M M,这种格式可以存储范围在 -9,999,999 < I < +9,999,999 内的整数,具有七位全精度。对于浮点数,我们可以将数字分配为 SEEMMMMM,即尾数的符号、两位指数和五位尾数,同时还需要指定隐含的小数点位置。
在这个例子中,我们用两位指数换取了两位精度的损失。需要强调的是,七位数字无论如何使用,都只能表示 10,000,000 个不同的值。我们只是以不同的方式使用这些数字,通过牺牲精度来扩大可表示的值的范围。如果要提高精度,可以增加数字的位数。
#### 2. 指数的存储方法
在提出的格式中,没有为指数的符号做出具体规定,因此需要一种方法将指数的符号包含在指数本身的数字中。一种常用的方法是偏移技术,即选择一个指数可能值的中间值,例如当指数可以取 0 - 99 时,选择 50 作为中间值,并声明该值对应指数 0。这样,小于该值的指数为负,大于该值的指数为正。
这种存储指数的方法称为 excess - N 表示法,其中 N 是所选的中间值。在我们的例子中,使用了 excess - 50 表示法,它允许存储的指数范围为 -50 到 +49,对应存储值 00 - 99。如果选择不同的偏移值,可以扩大处理较大或较小数字的能力。
假设隐含的小数点位于五位尾数的开头,excess - 50 表示法允许的数值范围为 0.00001 × 10⁻⁵⁰ < 数字 < 0.99999 × 10⁺⁴⁹。与整数相比,这个范围明显更大,同时还能表示小数。但在实际应用中,范围可能会受到一定限制,因为许多格式设计要求即使是非常小的数字,其最高有效位也不能为 0。
此外,与整数一样,使用太大而无法存储的数字仍可能导致溢出,而使用太小的小数则可能导致下溢。
#### 3. 浮点数的格式示例
以下是一些浮点数十进制表示的示例,使用的格式为:一个符号位、以 excess - 50 存储的两位指数和五位尾数。用 0 表示“+”号,5 表示“-”号,底数为 10,隐含的小数点位于尾数的开头。
| 存储格式 | 对应数值 |
| ---- | ---- |
| 05324657 | 0.24657 × 10³ = 246.57 |
| 54810000 | -0.10000 × 10⁻² = -0.0010000 |
| 55555555 | -0.55555 × 10⁵ = -55555 |
| 04925000 | 0.25000 × 10⁻¹ = 0.025000 |
#### 4. 浮点数的规范化和格式化
为了最大化给定数字位数的精度,浮点数应尽可能存储为无前导零的形式。这意味着在必要时,通过增加指数将数字左移,直到消除前导零,这个过程称为规范化。
我们的标准格式由固定大小的尾数和固定位置的小数点组成,指数将进行调整,以使数字以无前导零的形式存储。
将任何十进制数转换为标准格式需要四个步骤:
1. 如果数字本身没有指定指数,则为其提供指数 0。
2. 通过增加或减少指数,分别将小数点左移或右移,直到小数点位于正确的位置。
3. 如果必要,通过减少指数将小数点右移,直到尾数中没有前导零。
4. 根据需要添加或丢弃数字以满足精度要求。丢弃或舍入超出指定精度的数字,通过消除最低有效位;如果数字的位数少于指定的位数,则在末尾补零。
完成规范化并将数字转换为标准指数形式后,可以进行第五步,将结果转换为所需的字格式。具体做法是将指数转换为 excess - 50 表示法,并将数字放置在字中的正确位置。
以下是一些十进制数转换为浮点数格式的示例:
- **示例 1:将 246.8035 转换为标准格式**
1. 添加指数后,数字变为 246.8035 × 10⁰。
2. 将小数点左移三位,指数增加 3,得到 0.2468035 × 10³。
3. 该数字已经规范化,无需调整。
4. 由于有七位数字,丢弃两个最低有效位,最终的指数表示为 0.24680 × 10³。
5. 指数为 3,在 excess - 50 表示法中表示为 53。用 0 表示“+”号,最终存储结果为 05324680。
- **示例 2:将 1255 × 10⁻³ 转换为标准格式**
1. 数字已经是指数形式。
2. 将小数点左移四位,数字变为 0.1255 × 10⁺¹。
3. 该数字已经规范化,无需调整。
4. 添加一个零以提供五位精度,最终的指数结果为 0.12550 × 10¹。
5. 指数在 excess - 50 表示法中变为 51,最终的字格式结果为 05112550。
- **示例 3:将 -0.00000075 转换为标准格式**
1. 转换为指数表
0
0
相关推荐










