[oeasy]python0088_字节_Byte_存储单位_KB_MB_GB_TB

简介: [oeasy]python0088_字节_Byte_存储单位_KB_MB_GB_TB

编码进化

回忆上次内容

  • 上次 回顾了 字符大战的结果
  • ibm 曾经的 EBCDIC 由于字符不连续的隐患
  • 导致后续 出现 无数问题
  • 无法补救
  • 7-bit 的 ASA X3.4-1963
  • 字母序号连续
  • 比较字符时 效率高
  • 判断字符 是否是字母 也很容易
  • 获得了 IBM以外公司的 支持

  • 为什么 ASA X3.4-1963 是 7-bit 编码?
  • 8-bit 不是才 正好一个字节 吗?🤔

ASA X3.4-1963 文档

  • 注意这篇文档
  • 通篇提到6-bit、7-bit
  • 但是
  • 没有提到Byte

  • 那时候
  • 还有没有 Byte这个词

bite

  • 1956年
  • ibm工程师 Werner Buchholz
  • 第一次 使用了bite 来描述8-bit
  • 开音节读作[bait]

  • bite 在1956年 太过超前

时代

  • 毕竟 当时的计算机
  • 还处于 从模拟 到数字 的过程中
  • 计算机的 输出设备是
  • 指示灯
  • 电压表
  • 示波器

  • bite这个词
  • 流传于Rand、 MIT、IBM
  • 为了 和bit 区分
  • bite 的拼写
  • 演化成 Byte

ASA X3.4-1963 发布

  • IBM 编码演化
  • BCD码 4-bit
  • 发展到BCDIC 6-bit
  • 包含了字符
  • 网络通信 让 计算机 不再是 孤岛
  • IBM之外的其他公司 想要统一通信标准
  • 到 7-bit的 ASA X3.4-1963

  • IBM 之外的公司 从产品层面跟进
  • IBM 想要 主导标准

词汇出现

  • 1964年
  • ibm 发布 System/360
  • 存储容量单位 为 Byte (8-bit)
  • 首款机型 4096 Byte

  • Byte 这个单词
  • 作为 营销话语中的 概念
  • 开始传播

孤注一掷

  • 为了配合 8-bit 的 System/360
  • 编码规则 从6-bit的 BCDIC
  • 直接跳到 8-bit的 EBCDIC

  • 这是 IBM最后的倔强

终局

  • 两年之后 1965年
  • ibm最新机器
  • 也开始 使用 ASA X3.4-1963
  • 编码统一到了 7-bit的 ASA X3.4-1963
  • 也就是 后来的ASCII
  • 字符编码大战尘埃落定

  • 可是为什么 ASCII编码 用 7-bit
  • 1个字节 却要 8-bit 呢?
  • 7-bit 不是 刚好放下 吗?

1个字节8位

  • 我们 来看看 Bemer的个人网站
  • 介绍 字符编码 进化过程
  • 5-bit的博多码
  • 6-bit的BCDIC
  • 7-bit的ASCII
  • 8-bit的EBCDIC

  • 为什么 字节是 8-bit
  • 而不是 7-bit 呢?
  • Bemer 的说法是
  • 2次幂的 魔法
  • 8 = 23

2次幂的魔法

  • 计算机 只有 两根手指
  • 每根 手指
  • 可以代表 (10)2进制种状态

  • 就像 电路 只有

  • 电灯 只有

手指 增多

  • (10)2进制根手指
  • 2根手指
  • 可以 代表(100)2进制种状态
  • 4种状态

  • 这就是 2-4 译码器(decoder)
  • 如果 有更多手指 呢?

3-8 译码器

  • (11)2进制根手指
  • 3根手指
  • 可以代表 (1000)2进制种状态
  • 8种状态
  • 这就是 3-8译码器(decoder)
  • 或者说是 3-8解码器

  • 再往后呢?

4-bit 寻址空间

  • (100)2进制根手指
  • 4根手指
  • 可以代表(10000)2进制种状态
  • 16种状态

  • 再往上呢?😁

8-bit 寻址空间

  • 从4-bit 直接跳到 8-bit

  • (1000)2进制根手指
  • 8根手指
  • 可以代表(100000000)2进制种状态
  • 256种状态
  • 8-bit的cpu
  • 直接寻址空间 可达256个Byte
  • 16-bit的寄存器
  • 直接寻址空间  64 x 1024 Byte
  • 相当于 64KByte
  • 随着 计算机字长的增加
  • 存储单位 在指数级增长

更多存储单位

  • 1 KB = 1024 Byte
  • 1 GB = 1024 KB
  • 1 TB = 1024 GB

  • 这都是 基于Byte的单位
  • Byte 就是 8-bit
  • 但是7-bit的ASCII字符
  • 怎么放入 8-bit 的 Byte呢?

8-bit

  • ascii 的位置
  • ascii大小写字母之间只差 1 位(bit)
  • 最前面的 1-bit
  • 是 标志位
  • 后面的 7-bit
  • 是 ascii 字符数值

  • 如果 标志位 是0
  • 那么 这个字符 就是ascii字符
  • ascii的字符范围
  • 0 - 127
  • ASA X3.4-1963 就这样
  • 成了 ASA X3.4-1965

总结

  • 这次 回顾了 计算机存储单位的演变
  • 最小的读写单位 是 bit
  • 8-bit 固定下来 成为了字节(Byte)
位数 容量
8-bit 1Byte
1024Byte 1 KB
1024 KB 1 MB
1024 MB 1 GB
1024 GB 1 TB
  • 存储字符时
  • 第1位 是 标志位
  • 后7位 是 ascii具体的值
  • 可以用 1Byte 存储
  • 计算机之间 有了 更多的通信
  • 编码统一 为的是 更好地通信
  • 计算机之间
  • 怎么 开始通信的 呢??🤔
  • 我们下次再说!👋
  • 蓝桥->https://www.lanqiao.cn/courses/3584
  • github->https://github.com/overmind1980/oeasy-python-tutorial
  • gitee->https://gitee.com/overmind1980/oeasypython
  • 视频->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy
目录
相关文章
|
1月前
|
数据采集 存储 数据处理
Python爬虫-数据处理与存储(一)
Python爬虫-数据处理与存储(一)
|
9天前
|
人工智能 Shell 开发工具
[oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
10 1
|
20天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
29 4
|
27天前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
19 1
|
13天前
|
人工智能 开发工具 Python
[oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
11 0
|
1月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
21 3
|
2月前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
1月前
|
存储 C++ Python
[oeasy]python037_ print函数参数_sep分隔符_separator
本文介绍了Python中`print`函数的`sep`参数,即分隔符。通过回顾上文内容,解释了类型与`type`的概念,并强调了参数类型的重要性。文章详细探讨了`print`函数如何使用`sep`参数来分隔输出值,默认分隔符为空格(序号32)。还讨论了如何修改分隔符为其他字符,如冒号,并解释了为何反斜杠需要使用双反斜杠表示。最后,文章追溯了`sep`名称的由来,以及相关词汇的历史背景,如盎格鲁-萨克逊人的武器和语言。
28 0
|
2月前
|
存储 文件存储 Python
python如何把字节写到文件里4-2
python如何把字节写到文件里4-2
|
2月前
|
Python
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
28 4