二进制到十进制转换器
立即将二进制数转换为十进制数,并将十进制数转换为二进制数。最多支持 64 位数字。这个免费转换器可提供即时、准确的结果。
二进制到十进制转换的工作原理
二进制(基数2)只使用0和1两位数字。每个位置代表一个2的幂,从右到左逐渐增加。要将二进制转换为十进制,需要将每个二进制位乘以其位置值并求和。
示例:将1011₂转换为十进制
- 位置3(最左边):1 × 2³ = 1 × 8 = 8
- 位置2:0 × 2² = 0 × 4 = 0
- 位置1:1 × 2¹ = 1 × 2 = 2
- 位置0(最右边):1 × 2⁰ = 1 × 1 = 1
- 总计:8 + 0 + 2 + 1 = 11
十进制到二进制,重复除以2并记录余数,从下到上。11 ÷ 2 = 5 R1,5 ÷ 2 = 2 R1,2 ÷ 2 = 1 R0,1 ÷ 2 = 0 R1 → 读取余数向上:1011。
这种位置表示系统与十进制(基数10)相同,只是基数不同。在十进制(基数10)中,数字347表示3 × 10² + 4 × 10¹ + 7 × 10⁰ = 300 + 40 + 7。二进制使用相同的原理,只是使用2的幂而不是10的幂。
二进制位值参考
8位字节是计算机存储的基本单位。以下是8位数字(0-255)的完整位值表:
| 位位置 | 2的幂 | 十进制值 |
|---|---|---|
| 位7(MSB) | 2⁷ | 128 |
| 位6 | 2⁶ | 64 |
| 位5 | 2⁵ | 32 |
| 位4 | 2⁴ | 16 |
| 位3 | 2³ | 8 |
| 位2 | 2² | 4 |
| 位1 | 2¹ | 2 |
| 位0(LSB) | 2⁰ | 1 |
一个字节可以表示任何值,从0(00000000₂)到255(11111111₂)。两个字节(16位)覆盖0-65,535。四个字节(32位)覆盖0-4,294,967,295。
扩展的2的幂表
对于程序员和计算机科学家来说,了解2的幂至2⁶⁴至关重要,以了解内存地址、数据类型和系统限制:
| 幂 | 十进制值 | 意义 |
|---|---|---|
| 2⁰ | 1 | 最小单位(1位) |
| 2⁸ | 256 | 1字节范围(0-255) |
| 2¹⁰ | 1,024 | 1 KiB(kibibyte) |
| 2¹⁶ | 65,536 | 16位范围;TCP端口限制 |
| 2²⁰ | 1,048,576 | 1 MiB(mebibyte) |
| 2²⁴ | 16,777,216 | 24位颜色(16.7M颜色) |
| 2³⁰ | 1,073,741,824 | 1 GiB(gibibyte) |
| 2³² | 4,294,967,296 | 32位地址空间;IPv4最大值 |
| 2⁴⁰ | 1,099,511,627,776 | 1 TiB(tebibyte) |
| 2⁶⁴ | 18,446,744,073,709,551,616 | 64位地址空间;现代CPU |
注意二进制前缀(KiB、MiB、GiB — 2的幂)和SI前缀(KB、MB、GB — 10的幂)之间的区别。1 GB = 1,000,000,000 个字节;1 GiB = 1,073,741,824 个字节。这 7% 的差异解释了为什么一个“500 GB”的硬盘在您的操作系统中显示为 ~465 GiB(通常使用二进制单位进行内部操作)。
计算机中的常见二进制值
以下二进制值在编程、网络和系统管理中频繁出现:
| 二进制 | 十进制 | 十六进制 | 上下文 |
|---|---|---|---|
| 00000000 | 0 | 0x00 | 空字节,黑色颜色通道 |
| 00001010 | 10 | 0x0A | 换行符(LF)- Unix换行符 |
| 00001101 | 13 | 0x0D | 回车符(CR)- Windows换行符部分 |
| 00100000 | 32 | 0x20 | 空格字符(ASCII) |
| 01000001 | 65 | 0x41 | ASCII 'A' |
| 01100001 | 97 | 0x61 | ASCII 'a'(与'A'不同,位5不同) |
| 01111111 | 127 | 0x7F | 本地主机IP(最后一个八位数);DEL字符 |
| 10000000 | 128 | 0x80 | 扩展ASCII / 符号位 |
| 11000000 | 192 | 0xC0 | 类C网络前缀(192.x.x.x) |
| 11111111 | 255 | 0xFF | 广播;最大字节;白色在RGB中 |
二进制、十六进制和八进制比较
程序员根据上下文使用不同的数字系统。以下是相同值在每个系统中的表示:
| 十进制 | 二进制 | 十六进制 | 八进制 | 用途 |
|---|---|---|---|---|
| 0 | 0000 | 0x0 | 0o0 | 零 / 空 |
| 7 | 0111 | 0x7 | 0o7 | Unix 权限(rwx) |
| 10 | 1010 | 0xA | 0o12 | — |
| 15 | 1111 | 0xF | 0o17 | 最大 4 位(nibble) |
| 16 | 10000 | 0x10 | 0o20 | — |
| 127 | 1111111 | 0x7F | 0o177 | 最大有符号 8 位 |
| 255 | 11111111 | 0xFF | 0o377 | 最大无符号 8 位 |
| 511 | 111111111 | 0x1FF | 0o777 | Unix 权限 rwxrwxrwx |
| 1023 | 1111111111 | 0x3FF | 0o1777 | 最大 10 位(ADC) |
十六进制是最常用的二进制简写,因为每个十六进制数字都对应 4 位二进制位 —— 使转换变得简单。八进制将 3 位映射到一个数字,主要用于 Unix 文件权限(例如,chmod 755 = 111 101 101 在二进制中 = rwxr-xr-x)。
二进制有符号数(两的补数)
计算机使用 两的补数 来表示负数 — IEEE 和大多数现代处理器都遵循的标准。在 8 位的两的补数系统中:
| 二进制 | 无符号十进制 | 有符号(两的补数) |
|---|---|---|
| 00000000 | 0 | 0 |
| 00000001 | 1 | +1 |
| 01111111 | 127 | +127(最大正数) |
| 10000000 | 128 | −128(最小负数) |
| 10000001 | 129 | −127 |
| 11111110 | 254 | −2 |
| 11111111 | 255 | −1 |
要将数字转换为两的补数:将所有位反转,然后加 1。例如,+5 = 00000101 → 反转 → 11111010 → 加 1 → 11111011 = −5。
常见整数类型的范围:
| 类型 | 位数 | 无符号范围 | 有符号范围 |
|---|---|---|---|
| 字节 / uint8 | 8 | 0 到 255 | −128 到 +127 |
| 短整数 / int16 | 16 | 0 到 65,535 | −32,768 到 +32,767 |
| 整数 / int32 | 32 | 0 到 4,294,967,295 | −2,147,483,648 到 +2,147,483,647 |
| 长整数 / int64 | 64 | 0 到 18.4 × 10¹⁸ | −9.2 × 10¹⁸ 到 +9.2 × 10¹⁸ |
二进制在日常技术中
二进制是所有现代计算的基础,因为晶体管有两个稳定的状态(开/关,1/0)。关键应用:
- 文件大小: 1 KB = 2¹⁰ = 1,024 个字节;1 MB = 2²⁰ = 1,048,576 个字节;1 GB = 2³⁰ 个字节
- 颜色: RGB 颜色是三个 8 位值。#FF5733 在十六进制 = (255, 87, 51) 在十进制 = (11111111, 01010111, 00110011) 在二进制
- ASCII 编码: 字母“A” = 十进制 65 = 二进制 01000001;“a” = 97 = 01100001
- Unicode: 大多数文本字符都可以在 16 位二进制中表示(0–65,535 范围)
- IP 地址: IPv4 地址是四个 8 位二进制组:192.168.1.1 = 11000000.10101000.00000001.00000001
了解二进制可以直接帮助编程(位运算、标志)、网络(IP/子网计算)和与低级硬件打交道。
二进制算术:加法和减法
二进制算术遵循与十进制相同的规则,但只有两个数字。加法表格如下:
| A | B | 和 | 进位 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
示例:1011 + 0110
从右到左:1+0=1,1+1=10(写入 0 进位 1),0+1+1=10(写入 0 进位 1),1+0+1=10(写入 0 进位 1)。结果:10001(十进制:11+6=17 ✓)
在硬件中,减法通常通过将被减数的补数加到数值上来实现。要计算 A-B,处理器计算 A + (−B),其中 −B 是 B 的补数。这使得单个加数电路可以处理加法和减法。
位运算
编程语言提供位运算符,用于操作单个位。这些对于低级编程、嵌入式系统和性能优化至关重要:
| 操作 | 符号 | 示例(8 位) | 结果 | 用途 |
|---|---|---|---|---|
| 与 | & | 10110101 & 11110000 | 10110000 | 掩码位、提取字段 |
| 或 | | | 10110101 | 00001111 | 10111111 | 设置位、组合标志 |
| 异或 | ^ | 10110101 ^ 11111111 | 01001010 | 翻转位、简单加密 |
| 非 | ~ | ~10110101 | 01001010 | 位反转 |
| 左移 | << | 00000101 << 2 | 00010100 | 乘以 2ⁿ |
| 右移 | >> | 00010100 >> 2 | 00000101 | 除以 2ⁿ |
位移运算比乘法和除法在许多处理器中都要快。 x << 1 等同于 x × 2,而 x >> 1 等同于 x ÷ 2(整数除法)。游戏引擎和嵌入式固件广泛使用这些操作以提高性能。
二进制十进制(BCD)
二进制十进制将每个十进制数字表示为其自己的 4 位二进制模式。与纯二进制不同,BCD 保留了十进制结构:
| 十进制 | 纯二进制 | BCD |
|---|---|---|
| 0 | 0000 | 0000 |
| 5 | 0101 | 0101 |
| 9 | 1001 | 1001 |
| 10 | 1010 | 0001 0000 |
| 42 | 101010 | 0100 0010 |
| 99 | 1100011 | 1001 1001 |
| 255 | 11111111 | 0010 0101 0101 |
BCD 比纯二进制(10 个 4 位组合中使用)更占用空间,但它简化了十进制显示 — 每个 nibble 都直接映射到显示的数字。BCD 用于数字钟、计算器、金融系统(在这些系统中,精确的十进制表示很重要)和老式主机数据库(COBOL、IBM EBCDIC)。