piapia123
zh

进制加减乘除

转换

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

在二、八、十、十六进制下做四则运算。 不做溢出回绕。 有些十六进制计算器会把结果按 32 位或 64 位截断(`0xFFFFFFFF + 1` 得到 `0`)—— 那是在模拟机器字长,不是算术。一个计算器该先回答「这两个数加起来是多少」。需要掩码或回绕的场合请用二进制按位运算,那里有显式的位宽参数,取模这件事看得见。 除法给商和余数,不偷偷变成小数。 整数除法在世界各语言里有两种口径:向零取整(C 系、JavaScript 的 BigInt)与向下取整(Python)。`-7 ÷ 2` 在前者是 -3 余 -1、在后者是 -4 余 1 —— 两个答案都对,取决于你要哪一种。所以这里不选边:除不尽时把余数一起列出来。 前缀优先于所选进制。 写了 `0x` / `0o` / `0b` 就按它解析,哪怕与下拉框不一致 —— 否则 `0b1010 + 0xFF` 这种混用根本没法表达。

功能

  • 四种运算:加、减、乘、除,支持负数
  • 二、八、十、十六进制任选输入与输出进制,两者可以不同
  • 前缀优先:`0b1010 + 0xFF` 这种混用靠前缀表达
  • 除法给商,除不尽时附上余数(向零取整,余数与被除数同号)
  • 任意大的整数都精确,`0xFFFFFFFF × 0xFFFFFFFF` 也不会截断
  • 结果不是十进制时,另外附一个十进制读数省得心算
  • 一行一个操作数,可以批量对同一个数做运算
  • 输入支持 `_` 与空格作分隔符

使用方法

  1. 粘贴第一个操作数,一行一个
  2. 选输入进制、运算,填第二个操作数
  3. 需要时把结果进制改成另一种
  4. 点某一行的复制按钮取走结果

常见问题

为什么结果是负数,而不是回绕后的大数?
因为这个工具做的是算术,不是模拟机器字长。`0x00 - 1` 得到 `-0x1`,而不是 `0xFFFFFFFF`。回绕在真实系统里取决于字长(32 位、64 位、还是别的),工具替你选一个就是替你猜。要按固定位宽取模,用二进制按位运算:那里选了位宽之后,减法自然会在该位宽下回绕。
除法除不尽怎么办?
给出商与余数两个数,两个都是整数,都按你选的进制显示。比如十六进制下 `FF ÷ 10` = `F` 余 `F`(255 = 15 × 16 + 15)。这样做是因为「整数除法」有两种通行口径 —— 向零取整与向下取整,负数上会给出不同答案(`-7 ÷ 2` 是 -3 余 -1 还是 -4 余 1)。不选边、把余数交出来,谁都能用。
能算小数吗?
不能,两个原因。一是二进制里的 `0.1` 是无限循环小数,写出来只能是近似值;二是十六进制下的小数计算没有通行约定(小数点后几位算一位?)。整数四则运算覆盖了绝大多数真实需求(地址偏移、掩码、颜色值、协议字段),需要小数请用十进制的数值列表求和或普通计算器。

相关工具