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

探秘 NaN 隐秘世界:IEEE 754 标准下的特殊值应用及 JavaScriptCore 案例

NaN 的隐秘世界2018 年 3 月浮点标准定义了非数字Not-a-NumberNaN用于表示非数字的值。双精度 NaN 有 51 位有效负载可在动态类型语言运行时表示其他非浮点数值及其类型。2019 年 4 月更新作者在 2019 年的!!con West 大会上做了关于 NaN 隐秘世界的闪电演讲演讲录像可在 这里 找到。NaN 的公开一面当提到“NaN”和“浮点”时特指 IEEE 754 - 2008 中定义的表示方法该标准诞生于 1985 年源于对规范表示法的需求以解决不同处理器使用不一致的浮点表示法带来的混乱问题。浮点值是对实数的离散、类似对数形式的近似。IEEE 754 - 2008 超简要概述该标准定义了以 2 为底和以 10 为底的值的类似对数分布表示。对于以 2 为底标准定义了位宽为 16 位到 256 位之间所有 2 的幂次方的表示方法对于以 10 为底定义了位宽为 32 位到 128 位之间所有 2 的幂次方的表示方法。以 binary16 为例其格式为“1 符号位 | 5 指数位 | 10 尾数位”。该标准还定义了特殊值如 ±无穷大、“安静”quiet和“发信号”signaling的 NaN。IEEE 754 - 2008 对 NaN 的定义所有二进制 NaN 的位串其偏移指数域 E 的所有位都设置为 1。“安静”的 NaN 位串应将尾数位域 T 的第一位d1编码为 1“发信号”的 NaN 位串应将尾数位域的第一位编码为 0。现代通用硬件通常使用 64 位浮点数双精度格式的尾数位有 52 位意味着有 51 位可作为有效负载。“发信号”的 NaN 可用于表示未初始化的变量等可能引发异常“安静”的 NaN 应提供追溯诊断信息操作结果中的 NaN 应尽可能保留这些信息。有效负载能用来做什么人们利用 NaN 的有效负载在动态类型语言中传递数据和类型信息如 Lua 和 JavaScript 的实现。一本教科书 提出可在符号表达式解析器中使用 NaN 作为符号或把 NaN 用作缺失数据的值并使用有效负载指示缺失数据的来源或类别但未找到相关实现。有效负载的实际应用JavaScriptCore 案例分析NaN 装箱技术下语言中的所有值及其类型标签都用 64 位表示。JavaScriptCoreJSC使用 NaN 装箱并非唯一在 NaN 中存储其他类型的工业级实现Mozilla 的 SpiderMonkey、LuaJIT 也采用了这种方式。JSC 是为 WebKit 提供支持的 JavaScript 实现WebKit 驱动着 Safari 和 Adobe 的创意套件。截至 2018 年 3 月相关代码仍在 Safari 中使用。注释中的 NaN 装箱解释文件 显示NaN 装箱将非浮点数据类型存储在有效负载中用最高位编码有效负载的类型。可存储 32 位整数和 48 位指针。不同的值范围用于表示不同类型的对象代码中的范围与 IEEE - 754 标准定义的范围有所偏移是为了方便处理指针。通过查看文件中的掩码能更清楚了解范围偏移情况。

相关文章:

探秘 NaN 隐秘世界:IEEE 754 标准下的特殊值应用及 JavaScriptCore 案例

NaN 的隐秘世界 2018 年 3 月,浮点标准定义了非数字(Not-a-Number,NaN),用于表示非数字的值。双精度 NaN 有 51 位有效负载,可在动态类型语言运行时表示其他非浮点数值及其类型。2019 年 4 月更新&#xff…...

OpenClaw AI网关插件:基于LLM的智能模型路由与零成本上下文切换实践

1. 项目概述:一个轻量级的AI模型路由插件最近在折腾一个挺有意思的东西,一个给OpenClaw AI网关用的插件,叫model-router。简单来说,它解决了一个在多模型工作流里挺让人头疼的问题:如何根据任务类型,自动、…...

告别枯燥对话树:用Dialogue System for Unity打造电影级过场动画与QTE交互

告别枯燥对话树:用Dialogue System for Unity打造电影级过场动画与QTE交互 在叙事驱动的游戏开发中,对话系统往往是最容易被低估的环节。传统分支对话树虽然功能完整,但静态的文字呈现方式很难让玩家产生情感共鸣。想象一下《底特律&#xff…...

5分钟掌握JPlag:开源代码抄袭检测工具完全指南

5分钟掌握JPlag:开源代码抄袭检测工具完全指南 【免费下载链接】JPlag State-of-the-Art Source Code Plagiarism & Collusion Detection. Check for plagiarism in a set of programs. 项目地址: https://gitcode.com/gh_mirrors/jp/JPlag 您是否曾担心…...

CentOS 7下Qt 5.14.2保姆级安装教程:从.run包到菜单栏图标(含libGL报错解决)

CentOS 7下Qt 5.14.2图形化安装全流程实战指南 在Linux环境下进行Qt开发,CentOS 7依然是许多企业和开发者的首选系统。不同于源码编译的复杂过程,使用官方.run安装包能够快速搭建稳定的开发环境。本文将手把手带你完成从安装包准备到菜单集成的完整流程&…...

告别滚动条!用Qt的QTableView实现完美自适应表格(附完整C++源码)

告别滚动条!用Qt的QTableView实现完美自适应表格(附完整C源码) 在桌面应用开发中,表格控件是最常用的UI组件之一。无论是数据管理系统、配置工具还是报表展示界面,表格的呈现效果直接影响用户体验。然而,许…...

嵌入式/RTOS开发者的福音:手把手教你给FreeRTOS任务代码上覆盖率(解决GCOV环境变量和异常退出问题)

嵌入式开发实战:FreeRTOS任务覆盖率统计全流程解析 在资源受限的嵌入式环境中,代码覆盖率统计往往被视为"奢侈品"——传统方案要么依赖标准操作系统支持,要么需要复杂的工具链配置。但对于使用FreeRTOS的开发者而言,通过…...

高性能SVG代码解析引擎:InlineSVGToAI脚本的架构设计与技术实现

高性能SVG代码解析引擎:InlineSVGToAI脚本的架构设计与技术实现 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 在Adobe Illustrator工作流中,SVG代码的直接…...

多PostgreSQL实例统一查询:基于MCP协议的AI数据库助手部署指南

1. 项目概述与核心价值最近在折腾AI Agent的生态,发现一个挺有意思的痛点:很多AI工具,比如Claude Desktop、Cursor,它们内置的MCP(Model Context Protocol)服务器,能很方便地连接各种数据源&…...

DeepSeek-OCR-2图文教程:上传PDF→自动识别→复制文本→导出TXT/JSON

DeepSeek-OCR-2图文教程:上传PDF→自动识别→复制文本→导出TXT/JSON 1. 前言:告别繁琐,让文档识别变得简单 如果你经常需要处理扫描的PDF文档、图片里的文字,或者想把纸质文件变成可编辑的电子版,那么手动打字或者用…...

别只盯着算力!RK3588机器人主板的I/O、ADC与通信接口,才是落地关键

别只盯着算力!RK3588机器人主板的I/O、ADC与通信接口,才是落地关键 在工业机器人系统集成领域,开发者常常陷入"算力至上"的误区。实际上,真正决定项目成败的往往是那些看似平凡的接口——GPIO的响应延迟、ADC的采样精度…...

3大核心突破:让老旧Mac设备重获新生的技术革命方案

3大核心突破:让老旧Mac设备重获新生的技术革命方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 在苹果生态系统中,硬件淘汰周期往往…...

AgentDS:领域数据科学中人机协作框架解析

1. 项目概述AgentDS这个项目名称本身就蕴含着丰富的内涵。"Agent"暗示了某种自主性或半自主性的智能体,"DS"显然是Data Science(数据科学)的缩写,而"领域数据科学"则进一步限定了应用范围。从标题来…...

别再只会用LDO了!5V转3.3V的19种电路方案,从成本1毛到高效Buck全解析

5V转3.3V电路设计终极指南:从基础原理到工程实践 在嵌入式系统和物联网设备的设计中,电源转换电路如同人体的血液循环系统,为各个功能模块提供稳定可靠的能量供给。5V转3.3V的电路设计看似简单,实则蕴含着丰富的技术细节和工程权衡…...

Excel高效使用技巧(三):公式与函数实战:常用函数深度解析与错误排查

公式写得好,下班走得早;函数用得妙,加薪来得快。 如果说Excel是一座城市,那么公式和函数就是这座城市的交通网络。用得好,四通八达、畅通无阻;用不好,堵车堵到怀疑人生。 今天这篇文章,咱们不玩虚的,直接上干货——从高频函数的深度解析,到公式错误的排查技巧,手把…...

条件格式的正确打开方式

先说结论条件格式是Excel里最被低估的功能,大部分人只会用它给数据标个颜色,但它其实能帮你做数据可视化、异常值检测、动态高亮,甚至搭出一个简易的数据看板。这个东西是什么条件格式就像一个自动贴标签的助手,你告诉它规则&…...

【第5篇】LobeChat 本地一键部署:你的私人AI工作站,插件生态比肩Notion

系列导航:前四篇搞定了桌面客户端和网页部署,这一篇说 LobeChat——它的插件系统是本文最大的亮点,适合想用 AI 做知识管理、文档处理、网页搜索的人。 一、LobeChat 是什么? 如果说 Cherry Studio 是 AI 客户端里的"快捷酒店"(干净、够用、不折腾),NextChat…...

Hitboxer:告别键盘冲突,让你的游戏操作精准如职业选手

Hitboxer:告别键盘冲突,让你的游戏操作精准如职业选手 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否曾在激烈的游戏中,因为同时按下左右方向键而导致角色"卡住&…...

5分钟快速上手:Mem Reduct内存管理工具终极指南

5分钟快速上手:Mem Reduct内存管理工具终极指南 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 你的Wind…...

微信双设备登录终极方案:3步解锁平板模式,工作生活两不误

微信双设备登录终极方案:3步解锁平板模式,工作生活两不误 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad 你是否也经历过这样的烦恼?正用手机回复重要工作消息时&#xff0…...

LinkSwift:八大网盘直链解析终极指南 - 免费高速下载解决方案

LinkSwift:八大网盘直链解析终极指南 - 免费高速下载解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘…...

物理推理与视频模型评估:计算机视觉与物理模拟的交叉应用

1. 项目概述"物理基础推理与视频模型评估"这个项目标题看似简单,却蕴含了计算机视觉和物理模拟两个前沿领域的交叉应用。作为一名在计算机视觉领域深耕多年的从业者,我最近完成了一个类似的项目,今天就来分享一下其中的技术细节和实…...

国科大深度学习期末考了啥?我用Python复现了2020-2023年所有计算题(附完整代码)

国科大深度学习期末计算题实战:用Python复现卷积、损失函数与模型设计 备考深度学习课程时,单纯记忆理论概念往往事倍功半。本文将以2020-2023年国科大深度学习期末考题中的计算题为核心,通过Python代码完整复现解题过程,帮助读者…...

告别硬开关!用LLC谐振变换器实现ZVS/ZCS的保姆级原理拆解(附三种工作模式对比)

告别硬开关!用LLC谐振变换器实现ZVS/ZCS的保姆级原理拆解(附三种工作模式对比) 在电源设计领域,工程师们永远在追求更高的效率和更小的体积。传统硬开关技术带来的开关损耗和EMI问题,已经成为制约电源模块性能提升的瓶…...

SILMA RAGQA V1.0:大语言模型RAG问答评估框架解析

1. 项目背景与核心价值SILMA RAGQA V1.0是当前大语言模型(LLM)评估领域的重要基准测试框架,专门针对检索增强生成(RAG)问答场景设计。这个项目解决了行业内的一个关键痛点:传统LLM评估往往聚焦于通用能力&a…...

别再死记硬背参数了!图解PyTorch nn.Embedding,让你真正理解权重与输入输出

从几何视角彻底理解PyTorch的Embedding层:权重矩阵的视觉化探索 想象你走进一座巨大的图书馆,每本书都有一个独特的编号。当你查询某本书时,管理员会根据编号从特定书架取出对应的书籍。PyTorch中的nn.Embedding层就像这个智能图书管理系统—…...

STM32F407ZGT6驱动舵机云台,我踩过的两个坑:复用引脚与高级定时器使能

STM32F407ZGT6驱动舵机云台:复用引脚与高级定时器的实战避坑指南 调试二自由度舵机云台本该是嵌入式开发的常规操作,直到我在STM32F407ZGT6上遭遇了那些"教科书里没写"的硬件陷阱。当PC6引脚沉默不语、TIM8定时器拒绝输出PWM时,我才…...

别再折腾Vagrant了!用VirtualBox直接导入P4学习镜像(Ubuntu 16/20)的保姆级教程

零基础搭建P4开发环境的终极指南:绕过Vagrant直接使用预配置镜像 对于网络编程初学者来说,P4语言正成为软件定义网络(SDN)领域的重要工具。但许多人在第一步——环境配置上就遭遇了滑铁卢。本文将彻底解决这个痛点,提供一种比官方教程更可靠的…...

N_m3u8DL-RE:破解流媒体下载的三大技术难题

N_m3u8DL-RE:破解流媒体下载的三大技术难题 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE 在当今流…...

从Python迁移到C++:如何用matplotlib-cpp复现你熟悉的Matplotlib图表样式?

从Python迁移到C:用matplotlib-cpp复现Matplotlib图表样式的完整指南 当数据可视化需求遇上高性能计算场景,许多熟悉Python生态的开发者会面临一个关键抉择:如何在保留Matplotlib灵活性的同时,获得C的运行时效率?matpl…...