什么是进制(基数)
进制(基数)是指数到多少就进一位的计数方式。我们平时使用的十进制每10进一位,二进制每2进一位,十六进制每16进一位。计算机内部只使用0和1,因此以二进制为基础,但二进制位数长不易读,所以每4位归为一组、更简短的十六进制在编程中被广泛使用。八进制常见于Unix文件权限等场景。
常见的进制转换方法
十进制转二进制・八进制・十六进制
不断除以目标进制,将得到的余数从下往上排列。例如将十进制100转换为二进制:不断除以2,把余数从下往上排列得到1100100(100 = 64 + 32 + 4)。
二进制・八进制・十六进制转十进制
将每一位数字乘以该位的权重(基数的幂)后相加。例如二进制1100100转换为十进制:1×2⁶ + 1×2⁵ + 1×2² = 64 + 32 + 4 = 100。
二进制与八进制・十六进制的快速互转
由于8 = 2³、16 = 2⁴,将二进制按3位(八进制)或4位(十六进制)分组后分别转换,就能不经过十进制直接快速转换。例如将二进制1100100按4位分组得到0110 0100,对应十六进制的64。
本工具的特点
- 同时实时转换2 / 8 / 10 / 16 / 32 / 64进制共6种进制,只需在任意一个输入框中输入,其余全部立即更新
- 位数无限制,基于BigInt的任意精度运算,即使超出JavaScript的安全整数范围也能准确转换
- 支持带符号整数,在开头输入「-」即可输入负数
- 支持键盘操作:↑↓键以1为单位、Shift+↑↓键以10为单位调整数值
- 完全免费・无需注册・无广告
常见问题
进制转换该怎么做?
从十进制转换时,不断除以目标进制并记录余数;转换为十进制时,将每一位乘以该位权重后相加。详细步骤请参见上方「常见的进制转换方法」。
这里的32进制・64进制和Base32/Base64编码是一回事吗?
不是。本工具的32进制・64进制是按0-9 → A-Z → a-z → +/顺序分配数位的简单位值记数法,仅用于表示单个整数。这与RFC 4648规定的Base32/Base64编码(将字节序列字符串化的规范)是不同的概念,请注意区分。
可以转换带小数点的数值吗?
目前仅支持整数,不支持带小数点的数值转换。
可以转换负数吗?
可以。只需在任意输入框开头输入「-」,即可作为带符号整数转换为其他进制。