Skip to content

Latest commit

 

History

History
257 lines (178 loc) · 5.74 KB

278-567657-十六进制_hexadecimal_字节形态_hex函数_十六进制数.sy.md

File metadata and controls

257 lines (178 loc) · 5.74 KB
show version enable_checker
step
1.0
true

十六进制(hexadecimal)

回忆上次内容

  • 上次编辑了1个纯文本 文档
    • abcd

图片描述

  • 字符确实是

    • 存储在 字节里面的
  • 但是 转储的时候

    • 显示的 是 十六进制形态(Hex)
  • 究竟啥是 十六进制 呢?

    • 为什么 又出现一个 十六进制 呢??🤔

字节

  • 首先明确字节什么样子?

图片描述

  • 1 个 字节(byte)
    • 正好 8个 二进制位(binary digit)
      • 8-bit

图片描述

  • 如果我们用 十进制数
    • 来表示 一个字节的话
    • 表示范围从0到28-1
      • [0,255]
    • 至少需要3位数字
  • 想要用
    • 2位数字 得到字节状态
    • 有可能吗?🤔

一分为二

  • 把8位 分成前后两段
    • 前4位
    • 后4位
  • 每一段
    • 范围是多少呢?

图片描述

  • 4位都是0
    • 数值为0
  • 4位都是1
    • 数值为15

图片描述

  • 从0到15
    • 总共16个数字
  • 可以 用什么函数 直接
    • 将数字 转化为 十六进制形态 吗?
  • 就像 bin函数 那样 ?😄

16进制

  • 进入 python3

图片描述

  • 键入help(hex)
    • 观察hex的帮助文件
      • 如下图所示

图片描述

  • hexadecimal 是什么意思?

图片描述

动手

  • ord("a")
    • 得到a的序号97
  • hex(97)
    • 输出97对应的十六进制形式
  • hex(ord("a"))
    • 找到a对应的数字对应的十六进制形式

图片描述

  • 0x61 就是 十六进制的61

    • 0x
      • 十六进制数的 前缀标志
  • 正如

    • 0b
      • 二进制数的 前缀标志
  • 那这个0x61是怎么得到的呢?

16进制数

  • 4位 二进制数
    • 对应 1位 十六进制数
  • 8位 二进制数
    • 对应 2位 十六进制数

图片描述

  • 8 位(bit)

    • 刚好 对应 1个字节(byte)
  • 可以用 hex函数

    • 把10进制数 转化为
      • 16进制字符串形式
  • 就像我们会用 bin

    • 把10进制数 转化为
      • 2进制字符串形式

对应关系

图片描述

  • 字符 a 对应
    • (97) 10进制数
    • (0b1100001) 2进制数
    • (0x61) 16进制数

图片描述

  • 不过16进制数

    • 是怎么 出现16个数字的呢?
  • 先回忆 为什么用10进制?

回忆

  • 因为 我们有10根手指

图片描述

  • 16进制 有多少根手指 呢?

十六进制

  • 16进制需要16根手指

图片描述

  • 这有点可怕啊!!!

  • 我们真的需要 16根手指头 吗?

    • 印象深刻啊 ...
    • 不过 落实到 计数上...
  • 真的可以有 比9大的数字 吗?

    • 超出我们 对于数字的认知了
  • 具体 怎么表示?

比9大的数字

9 + 1 = 10
  • 10在十六进制中
    • 表示为a

图片描述

  • 15在十六进制中

    • 表示为f
  • 可以把所有的16进制数字

    • 列出来吗?

所有16进制数字

  • 哪些字母 对应 这些超过9的数字 呢?

图片描述

找到符号

  • 找到abcdef六个符号
    • 指代10-15 相应的数字

图片描述

  • 15再加1
    • 就进位了
    • 表示为0x10
      • 对应16了
      • 所以叫16进制

图片描述

16进制

  • 在ascii编码中的 小写字母a
    • 对应着(97)10进制数
    • 对应着(0b1100001)2进制数
    • 对应着(0x61)16进制数

图片描述

  • 我们满16的时候 才进1
    • 从0到9 用的都是 原来的符号
    • 后面没有符号了
      • 用a到f
  • "j" 这个字符对应
    • (6a)16进制数
  • 这怎么理解?

对应关系

  • 1个16进制数(hexadecimal)
    • 有4位(bit)
  • 1个字节(byte) 有 8位(bit)

图片描述

  • 1个字节
    • 正好对应 2位16进制数
  • 三种进制了
    • 我应该如何数数呢?

数树

  • 数树的结果 和 手指头的数量 没有关系
    • 2根 手指头
      • (0b1011)10
    • 10根 手指头
      • (11)10
    • 16根 手指
      • (0xb)16
      • 都不会影响 数出来的 树量

图片描述

  • 树还是那么多树
    • 只是 表示的形式 不同

总结

  • 这次我们了解了十六进制数
    • 为什么要有 十六进制数?
  • 因为 2位 十六进制数
    • 可以 准确描述 一个字节
  • 我们编写的py文件时
    • 都是用ascii字符编写的
      • 每个字符 都对应着一个字节状态
  • 可以查看py文件的 字节状态吗?
  • 我们下次再说!👋