一、引言
计算机使用二进制存储数据,了解二进制有助于理解Python的数据类型和存储方式。虽然编程时不需要直接写二进制,但理解原理能让你写出更优秀的代码!
💡 核心思想:电脑只认识 0 和 1,所有文字、图片、视频最终都转换成 0 和 1 存储!
二、什么是二进制?
二进制是一种以2为基数的计数系统,只使用0和1两个数字。计算机内部的所有数据都以二进制形式存储。
十进制 vs 二进制 对比
| 十进制(日常用) | 二进制(电脑用) |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 2 | 10 |
| 3 | 11 |
| 4 | 100 |
| 5 | 101 |
| 6 | 110 |
| 7 | 111 |
| 8 | 1000 |
三、二进制与十进制转换(必学)
3.1 二进制转十进制(简单)
方法:每一位数字 × 2的幂次方,然后相加
# 例子 1:二进制 101 转十进制
101 = 1×2² + 0×2¹ + 1×2⁰
= 1×4 + 0×2 + 1×1
= 4 + 0 + 1
= 5
# 例子 2:二进制 1101 转十进制
1101 = 1×8 + 1×4 + 0×2 + 1×1
= 8 + 4 + 0 + 1
= 13
# 例子 3:二进制 10101 转十进制
10101 = 1×16 + 0×8 + 1×4 + 0×2 + 1×1
= 16 + 0 + 4 + 0 + 1
= 21
3.2 Python 代码实现转换
Python 内置了转换函数,不用手动算!
# 二进制转十进制
num1 = int("101", 2)
print(num1) # 输出 5
num2 = int("1101", 2)
print(num2) # 输出 13
num3 = int("10101", 2)
print(num3) # 输出 21
3.3 十进制转二进制
方法:不断除以 2,记录余数,最后倒序排列
# Python 内置函数 bin() 可以直接转换
print(bin(5)) # 输出 0b101
print(bin(13)) # 输出 0b1101
print(bin(21)) # 输出 0b10101
# 去掉前面的 0b
print(bin(255)[2:]) # 输出 11111111
四、位(bit)与字节(Byte)
- ✅ **1 bit(位)**:最小单位,只能存 0 或 1
- ✅ **1 Byte(字节)**= 8 bits,是计算机基本存储单位
- ✅ **1 KB** = 1024 Bytes
- ✅ **1 MB** = 1024 KB
- ✅ **1 GB** = 1024 MB
五、Python 中的整数存储
Python 的整数以二进制形式存储,支持任意精度。
# 查看整数的二进制表示
print("5 的二进制:", bin(5)) # 0b101
print("255 的二进制:", bin(255)) # 0b11111111
print("1024 的二进制:", bin(1024)) # 0b10000000000
# 超大整数也没问题!Python 不害怕大数
big_num = 2 ** 100 # 2的100次方
print(big_num)
print(bin(big_num))
位运算案例(高级玩法)
位运算是直接操作二进制位,速度极快!
# 案例 1:判断奇偶
num = 17
print(num & 1) # 1 是奇数,0 是偶数
# 案例 2:乘以 2 的快速方法
print(5 << 1) # 10(左移1位 = ×2)
print(5 << 2) # 20(左移2位 = ×4)
# 案例 3:除以 2 的快速方法
print(20 >> 1) # 10(右移1位 = ÷2)
print(20 >> 2) # 5(右移2位 = ÷4)
# 案例 4:两数交换(不需要第三变量)
a = 5
b = 3
a = a ^ b
b = a ^ b
a = a ^ b
print("a =", a, "b =", b) # a=3, b=5
六、字符与编码(UTF-8)
Python 的字符串以字节序列存储(使用 UTF-8 编码)。每个字符在电脑里也是数字!
# 字符转数字(Unicode编码)
print(ord('A')) # 65
print(ord('a')) # 97
print(ord('中')) # 20013
# 数字转回字符
print(chr(65)) # A
print(chr(97)) # a
print(chr(20013)) # 中
# 查看字符的 UTF-8 字节表示
print('中'.encode('utf-8')) # b'\xe4\xb8\xad'
print('Python'.encode('utf-8')) # b'Python'
案例:简单加密解密
# 简单的加密:每个字符的编码 + 3
def encrypt(text):
result = ""
for char in text:
result += chr(ord(char) + 3)
return result
# 解密:每个字符的编码 - 3
def decrypt(text):
result = ""
for char in text:
result += chr(ord(char) - 3)
return result
# 测试
original = "Hello Python"
secret = encrypt(original)
print("原文:", original)
print("密文:", secret)
print("解密后:", decrypt(secret))
七、总结与练习
通过本章学习,你应该已经掌握了「二进制与 Python 数据存储原理」的相关知识。
课后练习题
# 1. 把以下二进制转十进制:
# 1100 → ?
# 1001 → ?
# 1111 → ?
# 2. 用 Python 代码验证
print(int("1100", 2))
print(int("1001", 2))
# 3. 把十进制 99、100、255 转二进制
print(bin(99))
print(bin(100))
print(bin(255))
建议多动手实践,加深理解!下一节我们学习 Python 开发工具的使用!