字符编码和二进制不得不说的故事

核心思想:
  冯诺依曼 + 图灵机

  电如何表示状态,才能稳定?
    计算机开始设计的时候并不是考虑简单,而是考虑能自动完成任务与结果的可靠性,
    简单始终是建立再稳定、可靠基础上

    经过尝试10进制,但很难检查电流的状态差异并且很难稳定状态,最稳定的检查是
    通电和不通电状态,共两种状态那就规定 通电为 1 不通电 为 0,1和0的状态逻
    辑被称为比特 Bit

  那么如何用 0 和 1 表示数字和字符呢?
    首先找出需要表示的字符,英文字符和数字字符才100多个,需要 7 个二进制位就
    可以全部表示,但为了可扩展性,多出一位表示扩展,这就是ASCII码

    因为一个字符只需要最多8个二进制位表示,所以规定8个字节作为存储单位,所有
    8 Bit = 1 Byte

    规定字符用数字表示,数字用二进制表示,也就是 字符 --> 数字 -- > 二进制
    那么文本信息就可以通过计算机存储为二进制,计算机上存储的二进制数可以逆转
    成文本信息

    10 进制到二进制之间的关系转换是固定的,那么字符到数字之间的转换被我们称为
    字符编码, ASCII码 Unicode UTF-8 都是存储字符与数字之间的映射关系

 

弄清楚几个关系
  1. 字符与数字之间的关系为映射关系,人为规定的标准
      这种映射关系,生活中普遍存在,如
    a. 身份证信息与身份证号码
    b. 数据库id与该行信息
    c. 订单信息与订单编号
    d. 员工编号与员工
    e. 字典的键与值
    f. 内存地址与存储在该地址上的值
    ...
  2. 数字到二进制之间的关系,这个如同数学或物理定律一样,固定转换方式,写死的

  3. 8进制 16 进制都是建立在2进制的基础上,和10进制之间没有直接关系,主要为了
   可读性,二进制的两种表示形式
   如二进制 00000000 一个存储单位,八进制000 000 000 每 3 个二进制位转
   换位10进制表示,最小数为 0 最大数为 7,所以取值范围为 0 - 7
   十六进制 0000 0000 每 4个二进制位转换位10进制表示,最小位为0 最大为15,
   所有取值范围为 0 - 15,因为超出10机制表示范围所以用 abcdef表示 10 11
   12 13 14 15

   十六进制常用于 内存地址表示 IPv6地址 颜色表 mac地址 二进制数据\x前缀b/B

    IP地址(32位 点分十进制) x.x.x.x 每个x都是8个bit位表示的十进制数字

  # 8进制 16进制是建立在二进制的基础之上

 

Py进制转换函数
  10进制转其他进制
    转2进制 bin 前缀0b
    转16进制 hex 前缀0x
    转8进制 oct 前缀0o
    # 二进制 八进制 十六进制都是通过带前缀的字符串形式"0b/o/x..."

# 10 进制转其他进制 number = 9999 print("10进制转其他进制".ljust(40, "*")) # 10 进制转2进制 b_number = bin(number) print("二进制:", b_number) # 10进制转8进制 o_number = oct(number) print("八进制:", o_number) # 10进制转16进制 h_number = hex(number) print("十六进制:", h_number)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdgfw.html