进制单位换算器
输入任意进制的数字,即时互转二进制、八进制、十进制、十六进制,支持 2–36 任意进制、负数、小数与超大整数(BigInt 精确),每种写法可一键复制。
按所选源进制填写;支持负号、一个小数点,可用空格/逗号分隔(如 1111 1111)。字母 A–Z 代表 10–35,大小写均可。请直接填数码本身,不要带 0x、0b、# 等前缀(十六进制 FF 写成 FF,不是 0xFF 或 #FF)。
换算在浏览器本地完成,整数用 BigInt 高精度处理,超大数字也不丢精度;小数在某些进制下为无限循环,会按最多 40 位截断。
怎么用
- 输入要转换的数字:在「要转换的数字」框里填数字,按它当前的进制写。例如十进制填 255,二进制填 11111111,十六进制填 FF。字母 A–Z 代表 10–35,大小写都行,可用空格或逗号分隔便于阅读。
- 选择源进制:用按钮选这个数字现在是几进制:二进制(2)、八进制(8)、十进制(10)、十六进制(16),或点「任意」手动填 2–36 之间的任意进制。
- 读取各进制结果:每改一处即时换算,结果区同时给出二进制、八进制、十进制、十六进制四种写法(自定义进制也会一并列出);源进制那一行标「源」。
- 复制需要的写法:点每一行右侧的「复制」把该进制结果复制到剪贴板,直接粘到代码、文档或计算里。负数和小数也支持。
核心要点
进制转换器把同一个数在不同「逢几进一」的计数法之间互相改写,大小不变、写法不同,常用于编程、计算机原理与电子学。
- 四大常用进制:二进制(0-1)、八进制(0-7)、十进制(0-9)、十六进制(0-9A-F),本工具默认同时给出四种结果。
- 真实算例:十进制 255 = 二进制 11111111 = 八进制 377 = 十六进制 FF。
- 整数原理:十进制转其它进制用「除基取余、逆序排列」;反向用「按位权展开求和」。
- 负数与小数:保留负号;小数按位权还原,某进制下无限循环时按最多 40 位截断并标注。
- 大数不丢精度:整数用 BigInt 处理,位数远超浮点安全范围也能精确互转。
常用数值进制对照表:
| 十进制 | 二进制 | 八进制 | 十六进制 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 10 | 2 | 2 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 255 | 11111111 | 377 | FF |
原理与公式
位置计数法里,一个数由「数码 × 位权」求和构成,位权是基数(进制)的幂。 进制转换就是在保持数值不变的前提下,换一套基数与数码来书写。
数码对照
二进制:0 1八进制:0 1 2 3 4 5 6 7十进制:0 1 2 3 4 5 6 7 8 9十六进制:0-9 A B C D E F(A=10 … F=15)
整数:除基取余(逆序)
13 → 2 进制:13÷2=6…1 → 6÷2=3…0 → 3÷2=1…1 → 1÷2=0…1余数逆序 = 1101
整数:按位权展开(还原十进制)
1101(2) = 1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 8+4+0+1 = 13FF(16) = 15×16¹ + 15×16⁰ = 240+15 = 255
小数:位权为负幂
0.101(2) = 1×2⁻¹ + 0×2⁻² + 1×2⁻³ = 0.5+0+0.125 = 0.625A.8(16) = 10 + 8×16⁻¹ = 10 + 0.5 = 10.5
精度与边界:整数部分用 BigInt 精确运算,位数不受浮点安全范围(约 15–16 位十进制)限制; 小数部分用整数分子/分母的精确有理数运算逐位生成,遇到某进制下的无限循环小数时, 按最多 40 位截断并在该行标注「已截断」。全部计算在浏览器本地完成。
常见问题
- 二进制、八进制、十进制、十六进制有什么区别?
- 它们是不同的「逢几进一」计数法:十进制逢十进一,用 0–9;二进制逢二进一,只用 0、1,是计算机底层的表示;八进制逢八进一,用 0–7;十六进制逢十六进一,用 0–9 和 A–F(A=10…F=15),常用于内存地址、颜色值(如 #FF8800)。同一个数在不同进制下写法不同但大小相等,例如十进制 255 = 二进制 11111111 = 八进制 377 = 十六进制 FF。
- 十进制怎么转二进制/十六进制?原理是什么?
- 整数用「除基取余、逆序排列」:把十进制数不断除以目标进制(2 或 16),记下每次余数,直到商为 0,再把余数从下往上读出来。例如 13 转二进制:13÷2=6余1、6÷2=3余0、3÷2=1余1、1÷2=0余1,逆序得 1101。反过来,二进制转十进制用「按位权展开求和」:1101 = 1×2³+1×2²+0×2¹+1×2⁰ = 13。本工具帮你一步到位,无需手算。
- 支持负数和小数(带小数点)的进制转换吗?
- 支持。负数在结果里保留负号,例如十进制 -255 转十六进制得 -FF。小数(如二进制 0.101)会先按位权还原:0.101(2) = 1/2 + 0/4 + 1/8 = 0.625(10)。注意一个在某进制下能「除尽」的小数,在另一进制下可能是无限循环(如十进制 0.1 转二进制是无限循环),这时工具会按最多 40 位截断并标注「已截断」。
- 十六进制里的字母 A–F 是什么意思?可以转更大的进制吗?
- 十六进制需要 16 个数码,0–9 不够,就用字母 A、B、C、D、E、F 表示 10、11、12、13、14、15。本工具支持 2–36 的任意进制:超过 10 的进制继续用 A–Z 当数码,最大 36 进制用满 0–9 和 A–Z 共 36 个符号(Z=35)。点「任意」即可填自定义进制。
- 输入能带 0x、0b、# 前缀或写小数进制吗?
- 不能。请直接填数码本身:十六进制 FF 写成 FF(不是 0xFF),二进制 1010 写成 1010(不是 0b1010),颜色值 #FF8800 去掉井号填 FF8800。带上 0x/0b/# 等前缀里的字母或符号不属于该进制的合法数码,会被判为非法输入。此外「源进制」只能填 2–36 之间的整数,像 36.01、2.5 这样的小数进制不被接受,工具会提示「源进制必须是 2–36 之间的整数」而不会截断成 36 或 2 蒙混计算。
- 转换很大的数字会不会算错、丢精度?
- 不会。整数部分用 JavaScript 的 BigInt 大整数运算,理论上位数不限,远超普通计算器和浮点数的安全范围(十进制约 15–16 位),像 2 的 80 次方这种大数也能精确互转。转换全部在你的浏览器本地完成,不联网、不上传数据。
- 十六进制颜色值(如 #FF8800)怎么转成十进制 RGB?
- 把 6 位十六进制颜色去掉井号后,按每 2 位拆成 R、G、B 三段,各自当作十六进制转十进制即可。以 #FF8800 为例:拆成 FF、88、00 三段,分别转十进制——FF(16)=15×16+15=255、88(16)=8×16+8=136、00(16)=0,得到 RGB(255, 136, 0)。用本工具时把某一段(如 88)填进「要转换的数字」,源进制选 16,读十进制那一行即可;三段依次换算就得到完整 RGB。
- 为什么程序员常用十六进制和二进制?
- 计算机内部用二进制(0/1 对应电路的开/关)存储和运算,所以底层数据天然是二进制。但二进制写起来太长,而十六进制恰好每 1 位对应二进制 4 位(八进制对应 3 位),换算规整、书写紧凑,于是内存地址、颜色(#RRGGBB)、机器码、位运算掩码等场景普遍用十六进制表示,需要时再和十进制/二进制互转。