轩小陌的Python笔记-day04 进制和编码
day04 进制和编码
课程目标:讲解计算机中一些必备的常识知识,让大家了解一些常见名词背后的含义(重在理解,今天不写代码)。
课程概要:
- python代码的运行方式
- 进制
- 计算机中的单位
- 编码
1.Python代码运行方式
脚本式
将python代码写好之后保存在文件中,再用python解释器去运行该文件
python3 -/PycharmProjects/day03/6.作业题讲解.py
交互式
在cmd中输入python3指令可进入python的交互式环境,一般用于在线代码测试,缺点是关闭后无法保存代码。
python3
2.进制
计算机中底层所有的数据都是以 " 010101 " 的形式存在(图片、文本、视频等)。
二进制(逢2进1)
计算机识别二进制指令的方式可以类比成古代打仗点烽火台的方式(如下图):
假设 " 1 " 代表点燃的烽火台," 0 " 代表未点燃的烽火台,那么根据图示," 110010 " 表示进攻," 010100 " 表示撤退," 100001 " 表示投降。其实计算机也是根据这样的方式来执行相关指令的。
二进制、八进制(逢8进1)、十进制(逢10进1)、十六进制(逢16进1)之间的关系如下图:
补充:其实不同进制之间只是表现形式不同,比如我们从小学习接触的都是十进制,所以我们对它非常熟悉,但对计算机来说二进制才是它执行指令的依据。
2.1 进制转换
二进制、八进制、十六进制都可以跟十进制相互转换,但是二进制、八进制、十六进制之间不能直接转换,要通过十进制进行转换。
- 十进制转换为其他进制:
v1 = bin(25) # 十进制转换为二进制
print(v1) # "0b11001"v2 = oct(23) # 十进制转换为八进制
print(v2) # "0o27"v3 = hex(28) # 十进制转换为十六进制
print(v3) # "0x1c"
- 其他进制转换为十进制:
# int()函数中传入参数base,可将其他进制转换为十进制
i1 = int( "0b11001" , base=2 ) # 二进制转换为十进制
print(i1) # 25i2 = int( "0o27" , base=8 ) # 八进制转换为十进制
print(i2) # 23i3 = int( "0x1c" , base=16 ) # 十六进制转换为十进制
print(i3) # 28
3. 计算机中的单位
由于计算机中本质上所有的东西以二进制进行存储和操作的,为了方便对于二进制值大小的表示,所以产生了一些计量单位。
b(bit),位
1 # 1位/1b 10 # 2位/2b 111 # 3位/3b 1001 # 4位/4b
B(byte),字节
8位是一个字节:
10010110 # 1字节/1B 10010110 10010110 # 2字节/1B
KB(kilobyte),千字节
1024个字节是1个千字节:
10010110 11010110 10010111 ... # 1千字节/1KB# 1KB = 1024B = 1024 * 8 b
M(Megabyte),兆
1024个千字节是1兆:
# 1M = 1024KB = 1024 * 1024 B = 1024 * 1024 * 8 b
G(Gigabyte),千兆
1024兆是1千兆:
# 1G = 1024M = 1024 * 1024 KB = 1024 * 1024 * 1024 B = 1024 * 1024 * 1024 * 8 b
T(Terabyte),万亿字节
1024千兆是1万亿字节,即:1024G = 1T
…其他更大单位 PB/EB/ZB/YB/BB/NB/DB 换算关系不再赘述。
练习:
假设1个汉字需要2个字节(2B=16位来表示,如:1000101011001100),那么1G流量可以通过网络传输多少汉字呢?(计算机传输本质上也是二进制)
# 1G = 1024 M = 1024 * 1024 KB = 1024 * 1024 * 1024 B 每个汉字需要2个字节表示,所以1G流量可以传输汉字数为: 1024 * 1024 * 1024/2 = 536870912
假设1个汉字需要2个字节(2B=16位来表示,如:1000101011001100),那么500G硬盘可以存储多少个汉字?
# 500G = 500 * 1024 M = 500 * 1024 * 1024 KB = 500 * 1024 * 1024 * 1024 B 每个汉字需要2个字节表示,所以500G流量可以传输汉字数为: 500 * 1024 * 1024 * 1024 / 2 = 268435456000
4.编码
编码:是文字和二进制之间的对照表。
4.1 ascii 编码
ascii 编码是计算机创建之初发明的编码,规定使用1个字节(8位)来表示字母、字符与二进制的对应关系。
00000000
00000001
00000010
00000011
...
11111111# 1个字节(8位)共有 2**8=256 种不同的二进制组合,假设每种组合分别代表1种字母/字符,那么最多可表示256种字母/字符。
注意:ascii 编码中只能表示英文字母、数字和相关字符,不能表示中文。
4.2 gb-2312 编码
gb-2312编码,由国家信息标准委员会制作(1980年)。
gbk编码,对gb2312进行扩展,包含了中日韩等文字(1995年)。
为了向下兼容ascii码,gb-2312编码在与二进制做对应关系时,有如下逻辑:
- 单字节表示,用一个字节表示对应关系。最多有 2**8=256 种组合可能性。
- 双字节表示,用两个字节表示对应关系。最多有 2**16=65536 种组合可能性。
4.3 unicode
unicode也被称为万国码,为全球的每个文字都分配了一个码位(二进制表示)。有以下2套标准:
ucs2:用固定的2个字节表示一个文字。
00000000 00000000 ... # 有 2**16=65536 种组合可能性
ucs4:用固定的4个字节表示一个文字。
00000000 00000000 00000000 00000000 ... # 有 2**32=4294967296 种组合可能性
ucs2 和 ucs4的关系:
文字 十六进制 二进制 ȧ 0227 1000100111ȧ 0227 00000010 00100111 ucs2ȧ 0227 00000000 00000000 00000010 00100111 ucs4乔 4E54 100111001010100乔 4E54 01001110 01010100 ucs2乔 4E54 00000000 00000000 01001110 01010100 ucs4
轩小陌的Python笔记-day04 进制和编码相关推荐
- 轩小陌的Python笔记-day06 数据类型
day06 数据类型(中) 常见的数据类型: int,整数类型(整形) bool,布尔类型 str,字符串类型 list,列表类型 tuple,元组类型 dict,字典类型 set,集合类型 floa ...
- Python学习笔记---day04进制和编码
day04进制和编码 课程目标:讲解计算机中一些必备的常识知识,让学员了解一些常见名词背后的含义(重在理解) 课程概要: python代码的运行方式 进制 计算机的单位 编码 1. Python代码运 ...
- 轩小陌的Python笔记-day25 MySQL入门
第四模块 MySQL数据库 从今天开始将进入第四模块的学习,这个模块就是给大家讲解MySQL数据库. 以前,在开发程序时,我们会把很多的数据和信息存储到某个文件夹中的文件中,例如:user.txt . ...
- 轩小陌的Python笔记-day28 索引、函数及存储过程
day28 索引和函数及存储过程 课程目标:了解 MySQL 中索引.函数.存储过程.函数.触发器.视图等知识点. 课程概要: 索引 函数 存储过程 视图 触发器 1. 索引 在数据库中索引最核心的作 ...
- 轩小陌的Python笔记-day05 数据类型
day05 数据类型(上) 接下来的3篇的内容都是讲解数据类型的知识点,常见的数据类型: int,整数类型(整型) bool,布尔类型 str,字符串类型 list,列表类型 tuple,元组类型 d ...
- 轩小陌的Python笔记-day13 匿名函数、生成器、内置函数、推导式
day13 内置函数和推导式 今日概要: 匿名函数 生成器 内置函数 附加:推导式,属于数据类型的知识,内部的高级的用法会涉及到[生成器]和[函数]的内容. 1. 匿名函数 传统的函数的定义包括了:函 ...
- 轩小陌的Python笔记-day16 模块二总结
day16 阶段总结 课程目标:对第二模块 "函数和模块" 阶段的知识点进行总结. 课程概要: 知识补充 阶段总结(思维导图) 1. 知识补充 1.1 nolocal关键字 在之前 ...
- 轩小陌的Python笔记-day08 模块一总结
day08 阶段总结和考试题 课程目标:对第一模块 "Python基础" 阶段的知识点进行总结,更好地掌握此模块的相关知识. 课程概要: 代码规范 知识补充 阶段总结(思维导图) ...
- 轩小陌的Python笔记-day26 必备SQL语句、表关系及授权
day26 必备SQL和表关系及授权 课程目标:掌握开发中最常见的SQL语句和表关系及授权相关知识点. 课程概要: 必备SQL(8个必备) 表关系 授权 1. 必备SQL语句 上一节讲解了最基础SQL ...
最新文章
- CentOS6.3 安装配置 ant
- SpringBoot随笔
- DIY Roomba Virtual Wall
- SQL SERVER With语法[转]
- ARM7寄存器分布图
- 为什么我不喜欢数据库三范式
- 前端学习(2260)高校案例
- @async 没有异步_玩转javascript异步编程
- 用户zabbix@localhost的访问被拒绝(使用密码:yes)_Coinbase意外地保存了3420个客户的未加密密码...
- JS中如何判断null
- CentOS更改root密码
- 机器学习sklearn----通过轮廓系数确定适合的n_clusters
- 坑——FreeSwitch接通30s就挂断
- 亚利桑那大学在线计算机硕士,亚利桑那大学计算机工程硕士排名第33(2020年TFE Times排名)...
- Scratch学习:如何把角色设置成半透明?
- android 登录注册动画,Android开发(14)——动画实战:炫酷登录
- P2P太假了,光有网站平台,连人都找不着了,更不用说网站大漏洞没人管,呵呵
- MySQL常用集群方案
- 使用C#开发Word VSTO外接程序示例
- 【附源码】计算机毕业设计SSM社区新冠疫苗接种管理系统
热门文章
- Galaxy S10系列4999元起,三星折叠手机、S10 5G版本没有售卖计划!
- 运用python画光刻板版图-1引言
- 上海计算机单招学院排名,2020年上海所有大学排名榜及分数线(2021参考)
- JWT(JSON WEB TOKEN)
- 江哥带你玩转C语言 | 15- 修饰符和预处理指令
- x265-1.8版本-common/lowres.h注释
- java for windows 7_javaj基础之Window 系统下 Java 环境搭建(一)
- matlab实现扩频,matlab实现扩频通信系统的多用户数据传输
- Hexo博客 | Ayer主题采用随机图片作为博客封面背景
- 服务器为什么被攻击?服务器攻击进黑洞是怎么解决?
- 轩小陌的Python笔记-day06 数据类型