进制转换
2/8/10/16/32/36 进制互转,BigInt 大整数不丢精度,支持 0x/0b 前缀、负数小数、原码反码补码与二进制位视图。
🔒 本地运行🔢 BigInt 精度
输入进制输出进制
255
十六进制 FF = 十进制 上方结果
2 进制 BIN
11111111
8 进制 OCT
377
10 进制 DEC
255
16 进制 HEX
ff
32 进制
7v
36 进制
73
二进制位视图 按 4 位分组,直观查看每个 bit
11111111
有效位数:8 bit · 字节数:1 B · 在无符号 64 位范围内
原码 · 反码 · 补码 计算机有符号数表示( 位)
位宽
| 表示方式 | 二进制 | 十六进制 |
|---|---|---|
| 原码 | 00000000000000000000000011111111 | 000000FF |
| 反码 | 00000000000000000000000011111111 | 000000FF |
| 补码 | 00000000000000000000000011111111 | 000000FF |
负数的反码 = 原码符号位不变按位取反;补码 = 反码 + 1。补码让减法可以按加法处理,0 也只有一种表示。
进制转换规则
- 任意进制 → 十进制:按位权展开求和。如 0xFF = 15×16 + 15 = 255;二进制 1010 = 1×8 + 0×4 + 1×2 + 0×1 = 10。
- 十进制 → 任意进制:整数部分除基取余(逆序),小数部分乘基取整(顺序)。
- 二 ↔ 八/十六:2 进制每 3 位对应 1 位八进制、每 4 位对应 1 位十六进制,可直接分组换算,所以十六进制是二进制的"缩写"。
- 编程语言字面量:JavaScript 中 0x 开头为十六进制、0o 为八进制、0b 为二进制;本工具支持直接粘贴这些前缀。
- 浮点数说明:小数在二进制下可能无限循环(如 0.1),转换结果按 12 位精度截断,存在微小误差属正常现象。
本工具能做什么
2/8/10/16/32/36 进制互转,BigInt 大整数不丢精度,支持 0x/0b 前缀、负数小数、原码反码补码与二进制位视图。
六进制互转:二进制 / 八进制 / 十进制 / 十六进制 / 32 进制 / 36 进制
BigInt 精确转换:超过 Number.MAX_SAFE_INTEGER 的大整数不丢精度
自动识别 0x / 0b / 0o 前缀,支持负数输入
二进制位视图:按 4 位分组可视化,逐位显示位权
原码 / 反码 / 补码:8 / 16 / 32 位宽下负数的机器表示
全进制对照表一次列全,⌨️ Ctrl+Enter 转换
适用场景
- 开发调试时的二进制 / 十六进制互转
- 处理雪花 ID 等大数不丢精度
- 查看负数在固定位宽下的补码
- 学习位运算时可视化二进制位
常见问题
为什么 0.1 + 0.2 不等于 0.3?
JavaScript 用 IEEE 754 双精度浮点,十进制 0.1 转二进制是无限循环小数,存储时被截断产生误差。涉及金额计算请先转成分(整数)运算,或用 BigInt / decimal 库。
多大的数会丢精度?
Number 超过 2^53 − 1(9007199254740991,约 9 千万亿)后无法精确表示,比如雪花 ID 直接 parseInt 就会变成错误值。本工具用 BigInt 处理,输入多长都精确。
补码是什么?为什么计算机用它存负数?
补码让加法器同时胜任减法:−1 的 8 位补码是 11111111,5 + (−1) 按位相加直接得到 4,无需额外减法电路。这也是为什么 8 位有符号数范围是 −128 ~ +127 而不是 ±127。
32 进制 / 36 进制有什么用?
36 进制用 0-9 加 A-Z 全部字母数字,是「最短的无符号大数表示」,常用于短链 ID、订单号压缩显示。如十进制 1234567890123456789 转 36 进制只要 12 位。