讲师中心 微信公众号
AI工具推荐 视频效率加速

浮点数中除以4与连续除以2两次是否恒等?

云墨大大_4168

云墨大大_4168

发布时间:2026-06-30 10:07:32

|

285人浏览过

|

来源于php中文网

原创

浮点数中除以4与连续除以2两次是否恒等?

在无溢出和下溢的前提下,对任意IEEE 754单/双精度浮点数x,x/4恒等于x/2/2,x4也恒等于x2*2,因为乘除2的整数次幂是精确运算,不引入舍入误差。

在无溢出和下溢的前提下,对任意ieee 754单/双精度浮点数x,x/4恒等于x/2/2,x*4也恒等于x*2*2,因为乘除2的整数次幂是精确运算,不引入舍入误差。

在IEEE 754浮点算术中,所有乘以或除以2的整数次幂(如2、4、8、0.5、0.25等)都是精确操作——前提是结果未超出可表示范围(即无溢出或下溢)。这是因为浮点数采用二进制科学计数法表示:
$$ x = (-1)^s \times (1 + f) \times 2^e $$
其中 $s$ 为符号位,$f$ 为尾数(fraction),$e$ 为指数。当执行 $x \times 2^k$ 或 $x / 2^k$(即 $x \times 2^{-k}$)时,仅需调整指数字段 $e \leftarrow e + k$,而尾数 $f$ 完全保持不变。只要新指数 $e + k$ 仍在合法范围内(单精度:$-126 \le e \le 127$;双精度:$-1022 \le e \le 1023$),该运算就不涉及任何舍入,属于“无损变换”。

因此:

  • x * 4 等价于 x * 2^2 → 指数加2;
  • x * 2 * 2 先指数加1,再加1 → 最终指数仍加2,尾数全程未变;
  • 同理,x / 4(即 x * 2^{-2})与 x / 2 / 2 均使指数减2,中间结果仍为正规数或非规格化数(只要未下溢),尾数始终保留原值。

✅ 验证示例(JavaScript,遵循IEEE 754双精度):

// 测试大量边界及典型值
const testCases = [
  1.23456789,
  Number.MAX_VALUE / 8,   // 接近上限但安全
  Number.MIN_NORMAL * 4,  // 接近下限但非下溢
  0, -0, Infinity, -Infinity
];

for (const x of testCases) {
  const a = x / 4;
  const b = x / 2 / 2;
  const c = x * 4;
  const d = x * 2 * 2;
  console.assert(Object.is(a, b), `x=${x}: x/4 !== x/2/2`);
  console.assert(Object.is(c, d), `x=${x}: x*4 !== x*2*2`);
}
console.log("All tests passed.");

⚠️ 注意事项:

  • ±0 的符号保持一致:-0 / 2 / 2 仍为 -0,与 -0 / 4 相同(符合IEEE 754规定);
  • NaN 和无穷大也满足恒等性:NaN/2/2 === NaN/4,Infinity/2/2 === Infinity/4;
  • 该性质仅适用于2的整数次幂:如 x/7/7 ≠ x/49(如问题中所示),因7非2的幂,每次除法均引入独立舍入误差;
  • 更广义结论:若表达式中仅含一次非2的幂的运算(如 /3 或 *5),其余均为 *2//2,则交换顺序不影响结果——例如 x/2/3 === x/3/2 === x/6,因为 /3 引入的舍入仅发生一次,且加法/乘法满足结合律与交换律在实数层面成立,而浮点实现中该唯一舍入点位置不影响最终结果(前提是无中间溢出)。

综上,在标准IEEE 754环境下,x/4 == x/2/2 与 x*4 == x*2*2 是严格成立的数学恒等式,而非经验性巧合——它是二进制浮点表示本质所决定的精确性保障。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

相关专题

更多
java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

5864

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2544

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

1652

2025.10.17

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

20

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

20

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

20

2026.09.30

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

20

2026.09.30

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

20

2026.09.29

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

220

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn