zlbingo

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编码中文占三个字节

参考文章:

  1. 位、字节、字符的区别

  2. 位、字节、字符三者之间的关系

  3. 位、字节、16进制

  4. 转义及编码(\u, \x)

分类:

技术点:

相关文章: