对位bit与字节byte的理解

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)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值