Skip to content

Q 格式定点数转换器

在十进制、原始整数、十六进制和二进制之间转换 Q7、Q15、Q31、Q1.15 与 Q16.16;查看精确存储值、量化误差、舍入和溢出,全程在浏览器本地完成。

无追踪 浏览器中运行 免费
所有计算均在你的浏览器本地完成;输入值不会离开这台设备。
Q 格式预设

解码寄存器字或 hex dump

粘贴最多 256 个以空格、逗号或换行分隔的十六进制字。每个 token 独立解码;工具不会改变字节序。

原始 token十六进制字无符号 raw code有符号存储整数精确存储值
已审核 Q 格式语义、舍入、溢出和二补码边界 — Go Tools 工程团队 · 2026年8月12日

工程团队使用 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. 1

    定义 Q 格式

    选择常用预设或自定义,并核对 signed/unsigned、总位数 W、小数位 F 和页面显示的 2^F 缩放因子。

  2. 2

    选择源表示

    要编码实数请选择十进制数值;要解码已有存储表示,则选原始整数、十六进制字或二进制字。

  3. 3

    设置转换策略

    处理十进制输入时选择舍入规则,并决定越界结果应报错、饱和还是二补码回绕。

  4. 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 是什么意思?
按本工具采用的常见 DSP 约定,Q15 表示一个有符号 16 位二补码字,其中有 15 个小数位:一个符号/整数位置加 15 个小数位置。它的缩放因子为 2^15,分辨率是 1/32768,范围从 -1 到 32767/32768。不同资料对 Qm.n 的计数方式可能不同,因此不要只看名称,还要核对总位数和 signed/unsigned。
Q15 和 Q1.15 是同一种格式吗?
很多资料会用这两个名字指向同一个有符号 16 位布局,但 Q 记法并没有完全统一:有的作者把符号位计入整数位,有的则不计。本转换器用 signed/unsigned、总位数 W、小数位 F 和缩放因子 2^F 消除歧义;它的 Q15 / Q1.15 预设明确是 signed、W=16、F=15。
如何解码负数的 Q 格式十六进制字?
先把十六进制文本解析成 W 位无符号 raw code。若格式为 signed 且最高位为 1,就减去 2^W 得到二补码存储整数,然后再除以 2^F。以 Q15 的 0xC000 为例:49152 - 65536 = -16384,再计算 -16384 / 32768 = -0.5。
支持哪些舍入和溢出模式?
十进制编码支持“就近舍入、中点取偶”、向零截断和向负无穷 floor。舍入后的整数超出 W 位范围时,Error 会拒绝,Saturate 会钳位到最近端点,Wrap 会按 2^W 取模。解码现成的 hex 或 binary 字不需要舍入,因为存储字本身已经确定。
什么时候该用 Q 格式,而不是 IEEE 754?
当协议、DSP 算法、寄存器或嵌入式系统为一个整数字规定了固定二进制缩放时,用 Q 格式。若位模式包含符号、动态指数和有效数字,请用 IEEE 754 浮点数转换器。若只需转换不带缩放语义的整数进制,请用进制转换器
这个工具会上传输入值或 hex dump 吗?
不会。解析、BigInt 精确运算、舍入、溢出处理和批量解码都在你的浏览器本地运行。批量输入限制为 16 KiB 和 256 个字,以保证页面响应;分析事件也不会包含你输入的数字、十六进制或 dump 内容。