十六进制计算器

在十六进制、十进制、二进制、八进制之间做四则运算、按位运算与移位,结果四种进制同时给出,全部在浏览器本地计算。

使用方法

十六进制计算器按下面的步骤即可算出结果,所有数值都在本页浏览器内换算,不上传任何内容。

第一步:在「数值 A」里填入第一个数,例如填 FF(这是十六进制的 255),并把「A 的进制」选成十六进制。第二步:在「数值 B」里填 10(十六进制的 16),「B 的进制」同样选十六进制。第三步:选运算符,例如「加 +」做 0xFF 加 0x10。第四步:移位位数填 4、方向选左移,可同时看到 A 左移 4 位的结果。点「开始计算」后,十六进制、十进制、二进制、八进制四种写法会一起出现;按输入框里按回车键也能直接算。

能解决什么

这个十六进制计算器主要帮你在写代码、看协议、调硬件时处理进制和位运算。第一,把一段十六进制立即换算成十进制、二进制、八进制,阅读内存地址或颜色值时很常用。第二,做十六进制加法、减法、乘法,比如把两个偏移量相加、把段地址乘以 16。第三,做按位与、或、异或,用来提取或清除某几个比特位,例如 0xFF AND 0x0F 只保留低 8 位。第四,做左移右移,快速实现乘二、除二或对齐到字节边界。

本页只处理整数进制换算与按位运算,不做浮点十六进制(IEEE 754 单精度、双精度)的位级解读,那种需求请用专门的浮点解析工具;本页也不解析带符号补码表示的负数字节流,需要时请自行分段处理。

原理和变量

十六进制计算器的核心只有几条,全部调用浏览器原生函数,没有任何外部库。

第一,读取数值用 parseInt(字符串, 进制),第二个参数就是 2、8、10、16,函数按对应基数把文本变成整数,例如 parseInt('FF',16) 得到 255。第二,输出四种进制用 Number.toString(基数),比如 (255).toString(16) 得到 "ff";十六进制字母统一转成大写方便阅读。第三,按位与或非异或和移位用 BigInt 实现而不是 JS 的位运算符,因为 JS 的 &、|、<< 会被先截断成 32 位有符号整数,超过 21 亿的数会算错,而 BigInt 是按需精度的整数,能覆盖到安全整数上限。第四,输入的文本会先去掉 0x、0b、0o 这类前缀再按进制校验,只允许该进制合法的字符出现。

第五,边界是:JS 安全整数上限为 9007199254740991(即 2 的 53 次方减一),超出这个范围整数会丢失低位精度,所以超过它就提示拆分;负数按带负号的写法展示,不做二进制补码展开。第六,常见误用是把十进制结果直接当十六进制抄、或忘记左移多位会溢出 32 位,本工具用 BigInt 和显式进制标注避免了这两点。

完整示例

下面用页面默认值演示,控件里的 A=FF、B=10、运算符为加、移位 n=4 左移,算出结果与上方输入框完全一致(数值仅作演示)。

加法:0xFF + 0x10 = 0x10F,十进制 255 + 16 = 271,二进制 100001111,八进制 417。乘法:0xFF × 0x10 = 0xFF0,即 255 × 16 = 4080。除法取商:0xFF ÷ 0x10 = 商 0xF、余数 0xF(255 ÷ 16 = 15 余 15)。按位与:0xFF AND 0x10 = 0x10(只有第 4 位重合)。左移:0xFF << 4 = 0xFF0,相当于 255 × 16 = 4080;右移 0xFF >> 4 = 0xF。

输入范围与对照表

四个进制可输入的范围是:十六进制 0-9 与 A-F(大小写均可)、十进制 0-9、八进制 0-7、二进制 0-1,带 0x、0o、0b 前缀也能识别。下面是 0 到 15 的进制对照表,前 12 行直接展开,点「加载更多」看剩余 4 行;表格可导出 CSV 或 JSON,也可复制成制表符文本。

十进制十六进制二进制八进制
0000
1111
22102
33113
441004
551015
661106
771117
88100010
99100111
10A101012
11B101113

结果边界和舍入

十六进制计算器只做整数运算,这里把容易踩的边界讲清楚。安全整数上限是 9007199254740991,超过它的整数在 JS 里会丢掉低位,因此本工具在解析阶段就拦截超范围输入,要求拆分。负数按负号加绝对值展示,不做二进制补码展开——如果你要的是 8 位、16 位、32 位补码,请先确定位宽再手动取低若干位。

除法只给整数商和余数,不做四舍五入,因为对地址偏移和位掩码来说小数没有意义;需要小数请改用普通十进制计算器。移位位数限制在 0 到 63,因为 64 位以上在网页整数场景很少见,且超过 53 位后 BigInt 虽然能算但显示已无实用对照。十六进制字母统一大写,二进制去掉前导零只保留有效位,这些都属于展示归一,不改变数值本身。

常见问题

为什么我输入 G 会报错?

十六进制只有 0-9 和 A-F 共 16 个符号,G 不属于其中任何一个。工具会提示「进制为 16 时不能出现字符 G」,请改成合法字符,或在进制下拉里改成十进制。

左移和右移跟乘以 2 是一回事吗?

对非负整数,左移 n 位等价于乘以 2 的 n 次方,右移 n 位等价于除以 2 的 n 次方并舍去余数。但右移不四舍五入,且只适用于整数,这点和普通除法不同。

为什么不用 JS 的位运算符而用 BigInt?

JavaScript 的 &、|、^、<< 会先把操作数转成 32 位有符号整数,大于 2147483647 的数会被截断算错。本工具用 BigInt 做按位和移位,能正确覆盖到安全整数上限。

负数怎么显示成十六进制?

本工具在数值前加负号展示,例如 -255 显示为 -0xFF,不做补码。若你需要固定位宽的补码(如 8 位补码 0x01),请按目标位宽取低若干位后自己换算。

除法结果为什么有商和余数?

整数除法没有小数,本工具给出商和余数两项,例如 255 ÷ 16 商 15 余 15,和十进制除法一致。需要小数请用普通计算器。

能处理超过 9007199254740991 的大数吗?

不能。JS 安全整数上限就是 9007199254740991,超过会丢精度,本工具直接拦截并要求拆分计算,这是 IEEE 754 双精度的固有边界,不是本页限制。

二进制结果前面的 0 为什么被去掉了?

这是展示归一:二进制只保留有效位,比如 5 显示为 101 而不是 00000101。数值不变,若你需要固定位宽请自行补前导零。

结果可以复制或导出吗?

可以。「复制结果」复制四种进制文本;对照表支持导出 CSV(带 BOM,Excel 不乱码)、导出 JSON(不带 BOM)以及复制制表符文本贴到表格里。

相关工具

十六进制颜色表:查十六进制色值与常见配色。 RGB 转十六进制:把 RGB 写成十六进制颜色。 十六进制转 RGB:把十六进制色值拆成 RGB。 十六进制转 HSL:十六进制与 HSL 互看。 HSL 转十六进制:从 HSL 得到十六进制。 ASCII 表格生成器:字符与码点对照。 十六进制查看器:以十六进制看文件字节。