计算机组成原理 - 浮点数偏移量为127的理解
计算机组成原理 - 浮点数偏移量为127的理解
问题描述
学习浮点数时,发现 IEEE 754 浮点数的阶码偏移量规定为 127,而移码偏移量一般为 128。
例如对于 8 位的数,映射关系为:
-128 - 0 - 127 (真值)
| | |
0 - 128 - 255 (移码值)
即偏移 128。
为什么此处规定为 127 呢?
释疑
关于移码
以 8 位数为例,总共能表示 256 个数,把这些数加上一个固定的值,从而形成新的码值(还是 8 位),这就是移码的定义。例如,可以把有符号数映射到 0 - 255 的段上。
移码的优势:原来的大小关系不变,且一一对应(没有两种表示的 0),很容易判断大小(如判断是最小值或者最大值)。
关于浮点数
对于 256 个数,有两个(相对)均衡的范围:
-127 - 128
-128 - 127
两个范围使用移码表示,去掉 00000000 和 11111111,也即去掉最小值和最大值(因为有特殊含义),为
-126 - 127
-127 - 126
反映到浮点数(32bit)上,第一种表达其范围为:
第二种表达范围为:
显然第一种更为对称。
因此使用 -126 - 127 的范围,也即 -127 - 128 的范围。此时要映射到 0 - 255 上,偏移值即为 127。
结论
使用 127 的偏移值,只是因为需要使用 -127 - 128 的值范围,此时浮点数的表示范围更为均衡而已。
注:这也只是对标准的一种猜测,但不失为一个合理的猜测。
后记
移码关键在于保持原来的大小关系,因此对于一个特定的范围,必须要将最小值映射成 0。
posted on 2020-10-31 17:33 amazzzzzing 阅读(6415) 评论(2) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)