使用方法
输入一个数,选择它是用哪种进制写的(二进制、八进制、十进制或十六进制),然后点转换。同一个值会同时以四种进制显示,每一项都可以一键复制。下面还会列出它需要的位数、在左边补 0 凑成 8 位(1 字节)整数倍的二进制;输入的不是二进制时,还会用表格列出除二取余的每一步。所有计算都在你的浏览器里完成,输入的数不会发送到任何服务器。
二进制的原理:每一位的权是 2 的幂
十进制里,每往左一位,位权就乘以 10:个位、十位、百位、千位。二进制里位权每次乘以 2,从右往左依次是 1、2、4、8、16、32、64、128。二进制的每一位(bit)只能是 0 或 1,所以一个二进制数其实就是在说“要把哪些 2 的幂加起来”。11111111 的 8 位全是 1:128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255,这是 1 个字节能存下的最大数,所以 256 是第一个需要 9 位的数。
十进制转二进制:除二取余法(短除法)
把十进制数除以 2,记下余数(0 或 1),再用商继续除以 2,一直除到商为 0。把余数从下往上(从最后一个到第一个)排列,就是二进制结果。以 37 为例:
- 37 ÷ 2 = 18 余 1
- 18 ÷ 2 = 9 余 0
- 9 ÷ 2 = 4 余 1
- 4 ÷ 2 = 2 余 0
- 2 ÷ 2 = 1 余 0
- 1 ÷ 2 = 0 余 1
倒序读出余数,得到 100101。验算:32 + 4 + 1 = 37。课本上常把这个过程写成竖式的短除法,道理完全一样。
二进制转十进制:按权展开求和
把每一位乘以它所在位置的位权(2 的幂),再全部相加。101101 中为 1 的各位,位权分别是 32、8、4、1,所以 32 + 8 + 4 + 1 = 45。写成公式就是 1×2⁵ + 0×2⁴ + 1×2³ + 1×2² + 0×2¹ + 1×2⁰。为 0 的位不贡献任何值,只需把为 1 的位权加起来。
十进制、二进制、八进制、十六进制对照表
| 十进制 | 二进制 | 八进制 | 十六进制 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 10 | 2 | 2 |
| 3 | 11 | 3 | 3 |
| 4 | 100 | 4 | 4 |
| 5 | 101 | 5 | 5 |
| 6 | 110 | 6 | 6 |
| 7 | 111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 32 | 100000 | 40 | 20 |
| 64 | 1000000 | 100 | 40 |
| 100 | 1100100 | 144 | 64 |
| 127 | 1111111 | 177 | 7F |
| 128 | 10000000 | 200 | 80 |
| 255 | 11111111 | 377 | FF |
| 256 | 100000000 | 400 | 100 |
| 1,000 | 1111101000 | 1750 | 3E8 |
| 1,024 | 10000000000 | 2000 | 400 |
二进制转十六进制、八进制:分组转换
十六进制用 0 到 9 和 A 到 F 表示 0 到 15。因为 16 = 2⁴,十六进制的 1 位正好对应二进制的 4 位:把二进制数从右往左每 4 位分成一组(最左边不足 4 位就补 0),每组换成一个十六进制数字即可。例如 1010 0110 就是 A6。1 个字节永远是两位十六进制(00 到 FF),所以内存地址、MAC 地址、网页颜色 #FF8800(红 FF、绿 88、蓝 00)都习惯用十六进制书写。
八进制用 0 到 7,1 位对应二进制的 3 位,所以从右往左每 3 位一组。八进制 777 就是二进制 111 111 111,等于十进制 511、十六进制 1FF。如今八进制最常见于 Linux 文件权限:chmod 755 就是 111 101 101,也就是 rwxr-xr-x。
例子:十六进制 FF 换成各种进制
F 的二进制是 1111,所以 FF 是 11111111。把 2 的幂加起来得到十进制 255;把同样的位从右往左每 3 位分组(011 111 111),得到八进制 377。一共 8 位,正好 1 个字节。
8 位、16 位、32 位、64 位能表示的最大数
| 位数 | 最大值 | 十六进制 |
|---|---|---|
| 8 位 | 255 | FF |
| 16 位 | 65,535 | FFFF |
| 32 位 | 4,294,967,295 | FFFFFFFF |
| 64 位 | 18,446,744,073,709,551,615 | FFFFFFFFFFFFFFFF |
n 位二进制可以表示 2ⁿ 个不同的值,从 0 到 2ⁿ − 1。32 位无符号整数最大约 43 亿,这也是 IPv4 地址总数的来源。本工具转换的是数值,不是文字:把汉字或英文字母变成 0 和 1 需要先选定字符编码(如 UTF-8),请用二进制翻译器。要算分数或百分比,可以用分数计算器和百分比计算器。
常见问题
10 的二进制是多少?
10 的二进制是 1010。10 ÷ 2 = 5 余 0,5 ÷ 2 = 2 余 1,2 ÷ 2 = 1 余 0,1 ÷ 2 = 0 余 1,余数从下往上读是 1010,也就是 8 + 2。
负数怎么转换成二进制?
计算机先固定位数,再用补码表示负数:把绝对值的二进制按位取反,再加 1。在 8 位下,−1 是 11111111,−128 是 10000000,和无符号的 255、128 是同样的位模式,所以必须先约定位数和表示方法。本转换器只处理非负整数。
小数能转换成二进制吗?
这个工具不行。小数部分要用 2 的负幂表示(二进制 0.1 是 1/2,0.01 是 1/4),通常用“乘二取整法”逐位求出,而很多十进制小数在二进制里是无限循环的:0.1 会变成 0.000110011…。这就是很多编程语言里 0.1 + 0.2 不严格等于 0.3 的原因。
0b、0o、0x 前缀是什么意思?
它们是大多数编程语言里标明进制的前缀:0b 表示二进制,0o 表示八进制,0x 表示十六进制。0b11111111、0o377、0xFF 和 255 是同一个数。转换器会接受所选进制的前缀并自动去掉。
一个数需要多少位二进制?
找出不超过它的最大的 2 的幂,把指数加 1。255 小于 2⁸ = 256,所以 8 位就够;256 需要 9 位。结果中的“位数”就是这个值,“所需字节数”是把它按 8 位向上取整后的字节数。
最后更新:2026年10月15日