p+pathadd.com基础工具 / 基础常用

INTEGER / WORD / BYTE ORDER

进制与数值表示

本地计算 · 不上传内容
就绪

精确数值

固定宽度位模式

按无符号解释
按有符号补码解释

ENGINEERING PRESSURES / ORIGINS / TRADE-OFFS

不是换一种写法:数值表示为何这样设计

01 / 从机器位串到人可检查的表示

位置计数法远早于电子计算机。莱布尼茨在 1703 年发表二进制算术的系统论述;20 世纪的数字电路又让二态表示具有直接工程价值:逻辑器件需要区分稳定的状态,而不是精确测量连续幅度。计算机采用二进制,不是因为人阅读长位串方便。

八进制和十六进制解决的是人的检查成本:每个八进制位对应 3 个二进制位,每个十六进制位对应 4 个。早期 12、18、36 位机器使用八进制很自然;8 位字节逐渐普及后,两个 Hex 字符恰好对应一个字节。IBM System/360 等体系推动了 8 位字节的广泛采用,但计算机历史并非只有这一种字节宽度。

十六进制提高可读性,并不改变信息量。0x 是文本记法而非内存中的额外字节;A–F 是数码而非字母内容。一个值前面加零通常不改变数值,但在协议字段、坐标和字节缓冲区中,宽度与前导零本身就是结构。

02 / 补码:让硬件少做一套事情

符号加绝对值的原码直观,却需要处理正负号和绝对值的不同组合;反码还有正零、负零及回卷进位等问题。补码用模 2ⁿ 的剩余类表达负数,让同一个 n 位加法器承担加减法:减去 x 可以变成加上它的补码,最高位之外的进位被丢弃。

以 8 位为例,−1 对应 256−1=255,即 11111111;与 1 相加得到 1 00000000,保留低 8 位就是 0。这里丢进位是固定宽度运算,不是说数学上的 255+1 等于 0。同一位串 11111111 可解释成无符号 255 或有符号 −1,符号性来自类型和协议,不来自位串自己。

有符号范围为 −2ⁿ⁻¹ 至 2ⁿ⁻¹−1,因此负端多一个数,最小负数的绝对值无法在同宽有符号类型中表示。扩宽负数时必须符号扩展;给 −1 的 8 位模式补零成 0000000011111111,会得到 255 而不是 −1。

03 / 大小端:架构差异如何变成互通问题

多字节整数需要决定哪个字节位于低地址。大端把最高有效字节放在前面,小端把最低有效字节放在前面。不同处理器选择与历史、实现和访存习惯有关:小端便于从低地址访问低有效部分,大端与从高位到低位的书写顺序一致;没有一种选择能让所有操作天然更优。

Danny Cohen 在 1980 年的《On Holy Wars and a Plea for Peace》中用“端”的比喻讨论这类分歧。许多 Internet 协议采用大端网络字节序,但文件和协议可以自己规定小端、混合字段或逐字段编码。x86 的常见内存布局不能自动代表网络包布局。

0x12345678 的 32 位大端字节是 12 34 56 78,小端是 78 56 34 12。反转的是字节顺序,不是把每个字节内部的位也反转,更不是简单倒置十六进制字符串字符。字节序是存储与传输约定,不改变数学数值。

数学整数没有边界,机器字段有

对 n 位字而言,位模式只覆盖 0 至 2ⁿ−1;有符号解释把最高位权重改为 −2ⁿ⁻¹。超出范围后如何处理必须明确:拒绝、检查溢出、饱和或按模回绕都可能出现在工程中,不能默认等价。无符号模运算与有符号语言规则也不同,例如 C 的有符号溢出不能按“硬件总会回绕”来写程序。

JavaScript Number 使用 IEEE 754 binary64,所有整数连续精确表示的安全范围止于 ±(2⁵³−1)。9007199254740993 若先转成 Number,已经可能失真,再转十六进制也无法补救。本页先用大整数库解析,再用 BigInt 处理位模式;输出 JSON 的数值用字符串保存,避免下游再次丢精度。

本页只转换整数,最大 4096 个输入字符;位宽按字节设置为 8–4096 位。超范围时仍输出精确数值,但不截断、不生成误导性的字节。负整数的进制结果保留负号;补码另列,不能把二者混成同一字符串。本页不解析浮点、小数或内存转储,所有输入仅留在当前页面,不自动保存。

问题表示约定需要保留的信息
同一个整数换写法2–36 进制数值、进制、符号;数值通常不受前导零影响。
寄存器或固定协议字段位宽 + 有符号/无符号解释范围、截断策略、符号扩展规则。
多字节值写入文件或网络大端 / 小端字节宽度、字段边界及协议字节序。
字节串变成传输文本Base64 / Base58 等编码原始字节及前导零、字母表、填充和校验;不是整数换进制。

进一步阅读:IEN 137 · On Holy Wars and a Plea for Peace · RFC 791 · Internet Protocol · ECMAScript · MAX_SAFE_INTEGER · ECMAScript · BigInt

关于此工具

整数进制转换与数值表示

能做什么?

在浏览器本地精确转换 2–36 进制整数,查看二进制、八进制、十进制和十六进制,以及固定宽度补码、有符号与无符号解释、大端和小端字节。支持复制与 JSON 导出。

使用步骤

  1. 输入整数并明确选择源进制。
  2. 查看目标进制,按需设置位宽并核对补码、有符号解释和字节序。
  3. 确认没有溢出后复制或导出 JSON;导出整数以字符串保存。

数据处理与使用限制

最多 4096 个输入字符,位宽 8–4096 位。不接受小数或科学记数法,溢出不截断。导出整数以字符串保存。不上传或自动保存输入。

相关工具