当前位置: 首页 > backend >正文

浮点数:IEEE 754标准

IEEE 754 标准是一种由电气和电子工程师协会(IEEE)制定的浮点数表示的标准,广泛应用于计算机系统中,下面是详细介绍:

历史背景

在 IEEE 754 标准出现之前,不同的计算机系统采用各自的浮点数表示方法,这给程序的可移植性带来了很大的困难。为了解决这个问题,IEEE 组织成立了专门的工作组,经过多年的研究和讨论,于 1985 年正式发布了 IEEE 754 标准。

基本格式

  • 二进制浮点数格式 :包括单精度(32 位)、双精度(64 位)和扩展精度(80 位)。其中,单精度浮点数的 1 位是符号位,接下来的 8 位是指数位,最后的 23 位是尾数位;双精度浮点数的 1 位是符号位,接下来的 11 位是指数位,最后的 52 位是尾数位。
  • 十进制浮点数格式 :包括 32 位、64 位和 128 位三种。十进制浮点数格式在存储和运算时直接使用十进制数,避免了二进制浮点数在表示十进制数时可能出现的精度问题,但在存储效率和运算速度上可能不如二进制浮点数格式。

数的表示

  • :零的指数位和尾数位都为全零,符号位可以是 0 或 1。正零和负零在数值上相等,但在某些运算中可能会产生不同的结果。
  • 无穷大 :当指数位全为 1 且尾数位全为零时,表示无穷大。符号位为 0 表示正无穷大,符号位为 1 表示负无穷大。
  • NaN(Not a Number) :当指数位全为 1 且尾数位不全为零时,表示 NaN。NaN 用于表示一些非法或不确定的运算结果,如 0/0、∞−∞ 等。

运算规则

  • 加减法运算 :首先需要对阶,即把两个数的指数调整为相同的值。然后进行尾数的加减运算,最后进行舍入和规格化处理。
  • 乘除法运算 :将两个数的尾数相乘或相除,指数相加或相减。然后对结果进行舍入和规格化处理。

舍入规则

  • 向最接近偶数舍入 :这是默认的舍入方式。在需要舍入时,选择最接近的可表示数,如果两个数距离相等,则选择尾数最低位为 0 的那个数。
  • 向零舍入 :直接舍去多余的部分,不进行任何调整。
  • 向正无穷舍入 :总是朝正无穷方向舍入,结果是大于或等于原数的那个可表示数。
  • 向负无穷舍入 :总是朝负无穷方向舍入,结果是小于或等于原数的那个可表示数。

优点和影响

  • 优点 :提高了浮点数运算的精度和可靠性,增强了程序的可移植性,为计算机系统的硬件设计和软件开发提供了统一的规范。
  • 影响 :IEEE 754 标准被广泛应用于计算机处理器、编程语言、数学库等各个领域,成为现代计算机系统中浮点数表示和运算的基础标准。
http://www.xdnf.cn/news/2520.html

相关文章:

  • PCIe 转 U.2 接双硬盘指南 - 超微(Supermicro)主板
  • Mysql如何高效的查询数据是否存在
  • 理解 Kubernetes 初始访问向量(一)——控制平面
  • 【Webpack \ Vite】多环境配置
  • makefile总结
  • 关于Spark知识点与代码测试的学习总结
  • 单片机 + 图像处理芯片 + TFT彩屏 复选框控件
  • 30-算法打卡-字符串-重复的子字符串-leetcode(459)-第三十天
  • 使用 Cherry Studio 调用高德 MCP 服务
  • NFS从零部署
  • 华为 CCE 查看节点剩余可调度cpu核数
  • 从零实现分布式WebSocket组件:设计模式深度实践指南
  • 路由协议基础
  • babel和loader的关系
  • 微深节能 平板小车运动监测与控制系统 格雷母线
  • LeetCode题解1297. 子串的最大出现次数
  • 低压电工常见知识点
  • 麒麟系统通过 Service 启动 JAR 包的完整指南
  • 【KWDB 创作者计划】_KWDB引领数据库技术革新的璀璨之星
  • 业务校验工具包-validate-utils介绍
  • spring-rabbit的CachingConnectionFactory默认参数导致消费者Channel数量暴增问题解决
  • go语言八股文(三)
  • Deep Dark Sea 局域網文件共享即時匿名聊天去數據庫部署
  • Ldap高效数据同步- MirrorMode双主复制模式配置详解(下)
  • spring项目rabbitmq es项目启动命令
  • 【Pandas】pandas DataFrame rfloordiv
  • 查回来的数据除了 id,其他字段都是 null
  • 【音视频】SDL事件
  • AI 发展历史与关键里程碑_附AI 模型清单及典型应用场景以及物流自动化适合的模型选择
  • 从零开始开发一个简易的五子棋游戏:使用 HTML、CSS 和 JavaScript 实现双人对战