二进制转换器
二进制转换器可以在 2 进制、8 进制、10 进制和 16 进制之间改写同一个数。十进制转二进制的方法是反复除以 2,然后自下而上读取余数:156 = 10011100。反过来,把各位权值相加,128+16+8+4 又得到 156。
只由 0 和 1 组成的行被识别为十进制数。如需按二进制读取,请在上方选择二进制,或在数值前加上 0b。
| 输入 | 识别为 | 十进制 | 二进制 | 八进制 | 十六进制 | ASCII |
|---|---|---|---|---|---|---|
怎样手动把十进制转换成二进制?
把十进制数除以 2,写下余数,再用商继续除以 2,重复到商为 0 为止。自下而上读取余数就得到二进制串。下表把 156 完整算到底;余数列自下而上读出来正是 10011100。
| 除法 | 商 | 余数(位) |
|---|---|---|
| 156 ÷ 2 | 78 | 0 |
| 78 ÷ 2 | 39 | 0 |
| 39 ÷ 2 | 19 | 1 |
| 19 ÷ 2 | 9 | 1 |
| 9 ÷ 2 | 4 | 1 |
| 4 ÷ 2 | 2 | 0 |
| 2 ÷ 2 | 1 | 0 |
| 1 ÷ 2 | 0 | 1 |
从最后一行往第一行读余数列:1、0、0、1、1、1、0、0——所以 156 的二进制是 10011100。
怎样把二进制转换成十进制?
每一位都有一个权值,从右往左依次翻倍。把权值写在各位上方,再把对应位是 1 的权值相加。在 10011100 中,1 分别位于 128、16、8 和 4 的上方,128 + 16 + 8 + 4 = 156。
| 位的位置 | 权值 | 10011100 中的位 | 增加 |
|---|---|---|---|
| 2⁷ | 128 | 1 | 128 |
| 2⁶ | 64 | 0 | 0 |
| 2⁵ | 32 | 0 | 0 |
| 2⁴ | 16 | 1 | 16 |
| 2³ | 8 | 1 | 8 |
| 2² | 4 | 1 | 4 |
| 2¹ | 2 | 0 | 0 |
| 2⁰ | 1 | 0 | 0 |
| 128 + 16 + 8 + 4 | 156 | ||
二进制、十进制、八进制与十六进制对照表
前 16 个值值得背下来,因为一个十六进制数字正好等于四位二进制。下面几行是实际编程中常遇到的界限:一个完整字节、一个有符号字节、两个字节和一个 KiB(1024 字节)。
| 十进制 | 二进制 | 八进制 | 十六进制 |
|---|---|---|---|
| 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 |
| 1024 | 10000000000 | 2000 | 400 |
| 65535 | 1111111111111111 | 177777 | FFFF |
怎样把二进制转换成十六进制和八进制?
不必做算术,直接分组即可。转十六进制时从右往左每四位一组,左侧不足补零:110110111 变成 0001 1011 0111 = 1B7。转八进制时每三位一组:110 110 111 = 667。两者的十进制值都是 439,反向转换同样有效——把每个数字重新展开成对应的位组即可。
二进制怎样转换成文本和 ASCII?
字符以数字形式存储,所以二进制转文本分两步:先把数据流切成 8 位一个字节,再在字符表中查出每个字节。RFC 20 规定了经典的 7 位 ASCII 编码,UTF-8 至今仍沿用它来表示英文,因此 01001000 01101001 就是 72 105,拼出来是「Hi」。
| 字符 | ASCII 码 | 二进制 | 十六进制 |
|---|---|---|---|
| (空格) | 32 | 00100000 | 20 |
| 0 | 48 | 00110000 | 30 |
| A | 65 | 01000001 | 41 |
| H | 72 | 01001000 | 48 |
| a | 97 | 01100001 | 61 |
| i | 105 | 01101001 | 69 |
IP 地址怎样用二进制表示?
IPv4 地址由四个 8 位的八位组构成:分别转换每个数字,并把每个都补足到八位。192.168.1.1 会变成 11000000.10101000.00000001.00000001。正是这种补零让前缀变得易读:/24 掩码保留前 24 位,也就是 255.255.255.0;/27 掩码则在八位组中间结束,对应 224 = 11100000。
负数在二进制中是怎样存储的?
几乎所有处理器都使用补码:先写出正数,把每一位取反,然后加 1。以八位表示 −5 时,00000101 先变成 11111010,再变成 11111011。最左边一位充当符号位,因此有符号字节的范围是 −128 到 127,同样的 8 位在无符号时是 0 到 255。本转换器按无符号整数计算:输入 251 即可看到 −5 的位模式。
来源
本页使用的字符编码、二进制词头和地址格式均来自以下规范。
关于二进制转换器
这个进制转换器把十进制、二进制、八进制和十六进制同时显示在一屏内。在与手头数字相符的输入框里键入,另外三个框会随每次按键同步改写,无需事先决定转换方向。运算使用任意精度,因此 64 位寄存器值往返之后依然精确:FFFFFFFFFFFFFFFF 得到 18446744073709551615,而不是被四舍五入的 18446744073709552000。下方的位条会把数值补齐到 8、16、32 或 64 位——超过 64 位时补齐到下一个整字节——并标出所用位宽,同时高亮每一个 1;检查掩码或标志字节时,这比数零快得多。输入按进制分别校验:在二进制框里输入 2、或在十六进制框里输入 G,都会给出明确的错误提示,而不是悄悄只转换字符串中合法的那一段。单值转换器下面是批量面板。把日志、表格或寄存器转储中的一列数值粘贴进来,选择它们所用的进制,就能得到一张包含四种进制、每行实际采用的进制以及可打印字节对应 ASCII 字符的表格。自动识别支持 0x、0b 和 0o 前缀;没有前缀的纯 0/1 字符串按十进制读取,并会被标注出来。结果可复制为制表符分隔的文本,也可下载为 CSV,第一列保留您原始的输入。全部计算都在本页完成:粘贴的内容不会上传到任何服务器。
使用场景
如何使用
输入数字
选择输入的数制
查看所有数制的转换结果
复制需要的格式
专业提示
- 二进制只使用0和1
- 十六进制使用0-9和A-F
- 每4位二进制等于1位十六进制
常见问题解答
二进制是计算机使用的数制,只使用两个数字:0和1。每个数字称为一位(bit)。
十六进制是基于16的数制,使用0-9和A-F。常用于表示颜色代码和内存地址。
十六进制是二进制的紧凑表示形式,每个十六进制数字代表4个二进制位,使代码更易读。