Q 格式定点数转换器
在十进制、原始整数、十六进制和二进制之间转换 Q7、Q15、Q31、Q1.15 与 Q16.16;查看精确存储值、量化误差、舍入和溢出,全程在浏览器本地完成。
实际存储表示
- 量化误差
- 缩放因子
- 可表示范围
- 分辨率
- 转换标志
解码寄存器字或 hex dump
粘贴最多 256 个以空格、逗号或换行分隔的十六进制字。每个 token 独立解码;工具不会改变字节序。
| 原始 token | 十六进制字 | 无符号 raw code | 有符号存储整数 | 精确存储值 |
|---|
工程团队使用 BigInt 精确有理数运算和明确的边界测试验证定点数向量。
什么是 Q 格式定点数?
Q 格式用“整数 + 隐含的二进制缩放”存储实数。若一个字有 F 个小数位,存储整数 N 所代表的数值就是 N / 2^F;二进制小数点本身并不写入这个字。有符号字通常使用 W 位二补码,无符号字则使用全部 code 范围。这种表示让没有浮点硬件的设备也能以可预测的成本完成乘法、滤波和寄存器存储,但范围、舍入、饱和以及 Q 名称的定义都必须成为数据契约的一部分。由于 Q 标签并非完全标准化,本转换器把 signed/unsigned、总位数 W 和小数位 F 作为唯一规范定义,并把它们与每次结果一起显示。
转换器功能
四种表示同步转换
以十进制、存储整数、十六进制字或二进制字中的一种作为唯一输入源,双向得到其余表示,全程不经过 JavaScript Number。
精确存储值与误差
使用 BigInt 有理数运算输出该位模式的完整终止十进制值,以及它相对原始十进制输入的带符号量化误差。
明确的舍入与溢出
直接比较 nearest-even、向零截断、floor,以及 error、saturate、二补码 wrap,不让策略隐藏在默认行为里。
常用预设与自定义位宽
快速选择 Q7、Q15/Q1.15、Q31/Q1.31 或 Q16.16,也可定义 1 到 64 位的 signed 或 unsigned 格式。
有边界的寄存器字解码
一次粘贴最多 256 个十六进制字;有效行独立解码,格式错误或超宽 token 会保留为清晰的逐行错误。
Q 格式转换示例
把十进制 0.1 编码为有符号 Q15
Q15,十进制 0.1,就近舍入且中点取偶
存储整数 3277;hex 0x0CCD;精确值 0.100006103515625
Q15 的缩放因子是 2^15 = 32768。理想的缩放整数为 3276.8,就近舍入后存储 3277;再除以 32768 得到精确存储值,量化误差为 +0.000006103515625。
解码 Q15 寄存器字 0xC000
Q15 十六进制 C000
raw code 49152;有符号整数 -16384;精确值 -0.5
这个 16 位字的最高位为 1。按二补码解释时,49152 减去 65536 得到 -16384;再按 Q15 缩放,-16384 / 32768 恰好等于 -0.5。
把 1.5 编码为 Q16.16
Q16.16 十进制 1.5
存储整数 98304;hex 0x00018000;精确值 1.5
Q16.16 使用 32 位有符号字和 16 个小数位。1.5 × 65536 恰好是 98304,因此不需要舍入,量化误差为零。
比较 Q15 对 1.0 的三种溢出策略
Q15 十进制 1.0
error 拒绝;saturate 存为 0x7FFF;wrap 存为 0x8000
有符号 Q15 的范围是 -1 到 0.999969482421875,所以 1.0 已越界。饱和会钳位到最大字,回绕则按 2^16 取模,结果成为最小负数。
如何使用 Q 格式转换器
- 1
定义 Q 格式
选择常用预设或自定义,并核对 signed/unsigned、总位数 W、小数位 F 和页面显示的 2^F 缩放因子。
- 2
选择源表示
要编码实数请选择十进制数值;要解码已有存储表示,则选原始整数、十六进制字或二进制字。
- 3
设置转换策略
处理十进制输入时选择舍入规则,并决定越界结果应报错、饱和还是二补码回绕。
- 4
检查实际存储结果
对照存储整数、raw code、规范化 hex 和 binary,再查看精确值、量化误差、范围与分辨率。
Q 格式转换的应用场景
- 解码 DSP 与 MCU 寄存器
- 把寄存器视图中的有符号传感器采样、滤波系数和控制环字转换为精确工程数值。
- 准备固件测试向量
- 按固件实际使用的舍入和溢出策略编码边界值,再复制规范化 raw word 写入单元测试。
- 审计量化误差
- 选择字宽之前,对比目标十进制值与固定二进制网格实际能存储的精确落点。
- 读取协议 hex dump
- 批量解码相同位宽的字且不偷偷改变字节序;若协议使用另一种端序,请先自行反转字节。
Q 格式表示细节
- 规范定义
- 本转换器用 signed/unsigned、总位数 W 和小数位 F 定义格式。缩放因子为 2^F,分辨率为 2^-F。有符号格式要求 F ≤ W-1,无符号格式允许 F ≤ W。
- 有符号与无符号范围
- W 位有符号字的整数范围是 -2^(W-1) 到 2^(W-1)-1;无符号字是 0 到 2^W-1。把两个端点都除以 2^F,就得到实际数值范围。
- 二补码字
- hex 和 binary 始终显示为 W 位无符号 raw code。对于 signed 格式,若 code 最高位为 1,缩放前的存储整数等于 rawCode - 2^W。
- 精确十进制解析
- 十进制输入使用只含 ASCII 的工程记数语法,可带符号、小数点和指数。输入先转为 BigInt 分数,再应用二进制缩放,因此不会被中间浮点舍入改写。
- 输入边界
- 单个输入最多 256 个字符、128 位有效数字,指数绝对值不超过 1000。批量输入最多 16 KiB、256 个 token,确保浏览器计算始终有界。
定点数转换最佳实践
- 每个 Q 标签旁都写明 W 与 F
- Qm.n 约定并不统一;在协议边界记录 signed/unsigned、总位数和小数位,不要假设所有人对符号位的计数相同。
- 匹配目标实现的舍入规则
- 只有转换器和目标代码采用同一中点与负数规则,测试向量才有效;对负小数而言,向零截断和 floor 并不相同。
- 把溢出当作明确契约
- DSP 常用饱和,原生整数运算可能回绕,校验层则可能拒绝。请选择目标系统的实际行为,不要依赖语言默认值。
- 单独确认字节序
- Q 格式定义数值缩放,不定义 byte order。本工具按每个 token 的书写顺序解码,不会重排内存或网络 dump 的字节。
Q 格式转换器常见问题
Q15 是什么意思?
Q15 和 Q1.15 是同一种格式吗?
如何解码负数的 Q 格式十六进制字?
支持哪些舍入和溢出模式?
什么时候该用 Q 格式,而不是 IEEE 754?
这个工具会上传输入值或 hex dump 吗?
相关工具
查看所有工具 →进制转换器 — 二进制、十六进制、十进制、八进制互转
转换工具
在线免费进制转换工具,支持二进制、八进制、十进制、十六进制及 2-36 任意进制互转。无需注册,数据不离开浏览器,即时获取结果。
chmod 计算器 — Linux 文件权限
转换工具
在线 chmod 计算器:Linux 文件权限在八进制(755、644)与 rwx 符号之间双向转换,实时生成可复制的 chmod 命令,并自动提示 777 等高危权限。免费使用,全部在浏览器本地完成,数据不上传。
颜色转换器 — HEX、RGB、HSL 与 OKLCH
转换工具
在浏览器中将 HEX 转 RGB、HSL、OKLCH、OKLAB 与 CMYK,一键复制任意格式。免费、免注册,您的颜色永远不会离开本页。
HEX 转 CMYK 转换器
转换工具
在浏览器中把 HEX 颜色转成 CMYK。基于 sRGB 的朴素近似,适合印前预览。免费、免注册,您的颜色始终保留在本地。
HEX 转 HSL 转换器
转换工具
在浏览器中把任意 HEX 颜色转成 HSL —— 3 位、6 位以及带 alpha 的 8 位全部支持。免费、即时、免注册,您的颜色永远不会离开本页。
HEX 转 OKLCH 转换器
转换工具
把 HEX 转成 OKLCH,直接喂给 Tailwind v4 设计 token。实时输出感知均匀的三元组,带 Display P3 色域提醒。免费,纯浏览器运行。