浮点数的计算机表示

本文译自 《计算机科学基础——从数据操纵到计算理论》

今天因为要用到浮点数怎么转化为二进制进而在计算机里表示,只隐隐约约记得有个 IEEE 什么的,网上的资料也是鱼龙混杂,干脆找到大一的这本书来看看。不看不知道,一看吓一跳。老外写的东西就是简单详细。特此记录。

ps. 这里的 0 1 位有点多,我敲下来难免有错漏,欢迎大家指正。

FLOATING-POINT REPRESENTATION

为了表示一个浮点数(一个有整数部分和小数部分的数)。这个数被分为两部分:整数部分和小数部分。比如,浮点数 14.234 分为 整数部分 14 和 小数部分 0.234.

转化为二进制(CONVERTING TO BINARY)

为了将一个浮点数转化为二进制,我们使用如下步骤:

  1. 将整数部分转化为二进制
  2. 将小数部分转化为二进制
  3. 在两部分之间放一个小数点(put a decimal point between the two parts)

转化整数部分 (Converting the Interger Part)

见第二章。

转化小数部分 (Converting the Fraction Part)

为了将小数转化为二进制,使用连续的乘法。比如,将 0.125 转化为二进制。

  1. 使用 2 乘这个小数,结果是 0.250。
    结果的整数部分(0)被提取出来,作为二进制最左边的那一位。
  2. 然后继续用 2 乘这个小数部分 (0.250),得到 0.50
    结果的整数部分(0)被提取出来,作为下一个二进制位。
  3. 持续这个过程直到小数部分为 0 或者达到一定精度。

ps. 书上算上这个有三个例子,这里只举一个。

例子

将小数 0.4 转化为 6 位二进制数。
在这里插入图片描述

归一化(NORMALIZATION)

为了表示 71.3125(+1000111.0101),我们需要在内存中存上符号、所有比特位和小数点的位置。虽然这个可以实现,但是这将数的操作弄得复杂了。你需要一个浮点数的标准表示形式。解决方法就是 归一化。归一化就是移动十进制点使得这个点的左边只有一个 1。
1. x x x x x x x x x x x x x x x x x x x x x x x 1.xxxxxxxxxxxxxxxxxxxxxxx 1.xxxxxxxxxxxxxxxxxxxxxxx
为了能够继续表示这个数的原始值,我们需要乘上一个 2 e 2^e 2e。其中 e 就是小数点点移动的位数。然后我们根据原始数的符号添上正负号。

Original Number Move Normalized
+1010001.11001 ← \gets 6 + 2 6 +2^6 +26 × 1.0
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值