文章目录
1. 位(bit)
位(bit):计算机内部数据存储的最小单元,每一位可以是二进制的0或者1。例:10101010就是一个八位的二进制数
2. 字节(byte)
字节(byte):计算机中的数据处理的基本单元,习惯上用大写B来表示。
1个字节 = 8bit,可以表示的数为 00000000~~11111111,转换成十进制的数为0~255
1B(byte,字节) = 8bit(位)
1KB = 1024 B
1MB = 1024 KB
3. 1个字节占多少个16进制位
二进制的1111 = 十进制的 15
16进制的 F = 十进制的15
因此一个16进制占4位(bit),1byte = 8bit,因此1个字节可以用两个16进制位表示
4.python 进制之间的转换
4.1 数字之间的转换
num = 10
# 十进制转换成二进制
print(f'Decimal : {num} to Binary is {bin(num)}')
# 十进制转换为八进制
print(f'Decimal : {num} to Octal is {oct(num)}')
# 十进制转换为16进制
print(f'Decimal : {num} to Hexadecimal is {hex(num)}')
# 二进制转换成十进制
print(int('0b1010', base=2))
# 八进制转换成十进制
print(int('0o12', base=8))
# 16进制转换成十进制
print(int('0xa', base=16))
Decimal : 10 to Binary is 0b1010
Decimal : 10 to Octal is 0o12
Decimal : 10 to Hexadecimal is 0xa
10
10
10
4.2 ASCIIS与对应字符的转换
# 返回字符对应的ASCII数值
print(ord('a'))
# 返回ASCII数值(十进制)对应的字符
print(chr(97))
# 返回ASCII数值(16进制)对应的字符
print(chr(0x61))
97
a
a
5. 电脑32位与64位的区别
计算机一次处理数据的量的大小:32为一次只能处理32bit数据
6. 不同编码格式占用的字节数
6.1 ASCIIS码
- 1个英文字母(不分大小写)= 1个字节
- 1个中文汉字 = 2个字节
- 1个ASCII码 = 1个字节
6.2 UTF-8编码
- 1个英文字符 = 1个字节
- 英文标点 = 1个字节
- 1个中文(含繁体) = 3个字节
- 中文标点 = 3个字节
6.3 Unicode编码
- 1个英文字符 = 2个字节
- 英文标点 = 2个字节
- 1个中文(含繁体) = 2个字节
- 中文标点 = 2个字节
7. 实验验证utf8 和 unicode 之间的区别
a_str = '淦'
print(a_str.encode('unicode_escape'))
print(a_str.encode('utf8'))
print(b'\\u6de6'.decode('unicode_escape'))
print(b'\xe6\xb7\xa6'.decode('utf8'))
b’\u6de6’
b’\xe6\xb7\xa6’
淦
淦
其中
-
\u为unicode码
一般其后跟 4 个 16 进制数,例:
b'\\u6de6'
从上述代码中可以看出unicode编码中文占两个字节
-
\x:只是 16 进制的意思,后边跟两位,则表示单字节编码,例
b'\xe6\xb7\xa6'
从上述代码中可以看出utf8编码中文占三个字节
参考文章: