进制和编码

2023-11-07

目标:了解计算机中一些必备的尝试知识,了解常见名词背后的意义

1.python的运行方式

  • 交互式运行
  • 脚本式运行

2.进制

2.1 进制的转换

计算机中底层的所有数据都是0101010101的形式存在的

八进制无法直接转为2进制

  • 十进制转其他进制
bin(25) # 10进制转为2进制
oct(25) # 10进制转为8进制
hex(25) # 10 进制转为16 进制

输出的结果都是字符串类型的结果

  • 其他进制转为十进制
int('0b11001', base=2) 2进制转为10进制
int('0o31', base=8) 8进制转为10进制
int('0x19', base=16) 16进制转为10进制

由于计算机中本质上所有的东西都是二进制进行存储和操作的,所以产生了计算机的单位。

  • b(bit),位
1,1位
10,2位
111,3位
1001,4位
  • B(byte),字节
8位数是一个字节
10001000,1个字节
10001000 10001000 2个字节
  • KB(kilobyte),千字节
1024个字节=1千字节
1kb=1024B=1024*8b
  • M(Megabyte)兆
1024KB = 1M = 1024*1024 B 1024*1024*8 b

G(Gigbyte),千兆

1G = 1024 M =1024*1024KB = 1024*1024*1024 B = 1024*1024*1024*8 b
  • T (Terabyte),万亿字节
1T = 1024G

4.编码

编码,文字和二进制之间的一个对照表

4.1 ASCII编码

ASCII规划使用一个字节表示字母与二进制对应关系
请添加图片描述

4.2 GB-2312编码

gb-2312编码,由国家信息标准委员会制作(1980年)

gbk 编码,对gb2312进行扩展,包含了中日韩等文字(1995年)。

在与二进制做对应关系时,由如下逻辑:

  • 单字节表示,用一个字节表示对应关系。2**8 =256
  • 双字节表示,用两个字节表示对应关系。2**16 =65536种可能性

4.4 Unicode

Unicode 也被称为万国码,为全球的每个文字都分配了一个码位

  • Ucs2
用固定的2个字节表示一个文字
  • Ucs4
用固定的4个字节表示一个文字

无论是ucs2和ucs4都有一个问题就是浪费空间

文字	  十六进制	二进制 
冯  		51AF 	101000110101111 
冯		51AF	01010001 10101111 					ucs2 	
冯		51AF	00000000 00000000 01010001 10101111 ucs4

unicode的应用:在文件存储和网络传输时,不会直接使用Unicode,而在内存中会使用Unicode的

4.4 utf-8编码

包含所有的文字和二进制的对应关系,全球应用范围最为广泛的一种编码形式(站在巨人肩膀上工程名就)

本质上:utf-8是对Unicode编码的压缩,用尽量少的二进制与文字进行对应

Unicode码范围		UTF-8
0000 - 007F			用一个字节表示
0080 - 07FF 		用两个字节表示
0800 - FFFF 		用三个字节表示
10000 - 10FFFF 		用四个字节表示

压缩流程

  • 第一步:选择转换模版
码位范围(16进制)		转换模版
0000 - 007F				0xxxxxxx
0080 - 07FF 			110xxxxx 10xxxxxx
0800 - FFFF 			1110xxxx 10xxxxxxx 10xxxxxx
10000 - 10FFFF			11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

注意:一般中文都使用第三个模版(三个字节),这也就是大家说中文在UTF-8中会占三个字节的原因了

  • 第二步:在模版中填入数据
冯 -》51AF-》101 000110 101111 
根据模版去套入数据
1110xxxx 10xxxxxxx 10101111 
1110xxxx 10000110 10101111 
11100101 10000110 10101111 
在utf-8 编码中"武"的编码为  11100101 10000110 10101111 

4.5 Python中的编码

字符串(srt)    "yujinlong"    unicode 	一般用于内存
字节(byte)					utf-8 or gbk  一般用于文件和网络 
text = 'yuijnlong2002'
data = text.encode('utf-8')
# 打开一个文件
file = open('yujinlong.txt', mode='wb')
# 写入字符串
file.write(data)
# 关闭文件 
file.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进制和编码 的相关文章

随机推荐

  • QCustomPlot使用技巧

    QCustomPlot使用技巧 一 一 QCustomPlot坐标轴 一个QCustomPlot里有四个坐标轴 其中xAxis yAxis xAxis2和yAxis2分别表示如图所示的4个方向的坐标轴 xAxis2和yAxis2默认隐藏 可
  • vuecli中使用express和mockjs模拟数据

    首先npm安装express和mockjs npm i express npm i mockjs http mockjs com https expressjs com en 5x api html 之后在package json内添加启动
  • 蓝牙之三-StateMachine

    蓝牙和wifi的管理上都使用到了状态机 该状态机属于分层状态机管理消息 一个状态对应于一个
  • vue3 ref()

    通常我们在获取子组件的数据和方法的操作 解决 ref 对子组件进行数据的获取以及方法的触发 不同 需要在子组件 通过defineExpose进行方法的 数据的 暴露 案例 父组件
  • Swagger 3.0 使用指南

    Swagger 3 0 使用指南 Swagger 官网地址 https swagger io 1 Swagger 是什么 API Developmentfor Everyone Simplify API development for us
  • 探究:kafka生产者/消费者与多线程安全

    目录 1 多线程安全 1 1 生产者是多线程安全的么 1 1 消费者是多线程安全的么 2 消费者规避多线程安全方案 2 1 每个线程维护一个kafkaConsumer 2 2 单 多 kafkaConsumer实例 多worker线程 2
  • fastdfs返回的url_FastDFS接口API文档说明

    一 命令行的上传 上传命令1 usr local bin fdfs upload file 例如 系统根目录下有个文件需要上传到dfs服务器上 cairo 1 2 0 tar gz 执行上传命令如下 usr local bin fdfs u
  • 浅谈数学与信息学关系

    众所周知 数学是所有理科科目的基础 在信息学竞赛中 无论是NOIP NOI乃至IOI对竞赛选手的数学水平 数学思维以及对数学模型的构造都提出了更高的要求 当然 在信息学中 在程序中并不是生搬硬套数学公式 需要有灵活的对数据的处理 高效的算法
  • 处理器对原子操作的实现

    文章目录 引入 单核 多核 引入 原子操作对于我们来说 是非常熟悉的概念 从用户角度 可以用原子操作来替换重量级的锁同步 从而提高程序性能 底层实现角度 原子操作可以用于构建各种更重量级的同步操作 比如锁或屏障之类的 对于原子操作的实现来说
  • 微信小程序开发:实现地图导航功能

    地图导航功能是近年来移动应用中极为常见的功能之一 它能够为用户提供准确的地理位置信息以及最佳的路线规划 帮助用户快速准确地找到目的地 微信小程序开发中的地图导航功能 需要通过多种技术手段综合实现 包括地图API 定位 路线规划 搜索服务等
  • STM32讲解

    目录 一 STM32简介 二 STM32命名规则 三 STM32硬件系统简介 四 STM32常用模块以及外设 4 1 STM32引脚介绍 4 1 1通用输入工作模式简介 4 1 2通用输出工作模式简介 4 2 STM32 中断简介 4 3
  • Opencv 模块计算机类型“x64”与目标计算机类型“X86”冲突

    Visual Studio 2012 模块计算机类型 x64 与目标计算机类型 X86 冲突 在使用Visual Studio 2012编译运行OpenCV的时候 出现错误 fatal error LNK1112 模块计算机类型 X86 与
  • Jmeter在windows10命令行启动显示此时不应有

    Jmeter在windows10命令行启动显示此时不应有 Jmeter配置路径正常 直接运行目录下的Jmeter bat也能运行 但是在命令行输入Jmeter便一直显示此时不应有 查了网上这种问题的解决方法 都是说环境变量路径问题 1 路径
  • python 正则表达式 compile_使用compile()函数编译正则表达式【Python技术文章】

    如果需要对一个正则表达式重复使用 那么可以使用compile 函数对其进行预编译 以避免每次编译正则表达式的开销 complie 函数语法格式如下 compile pattern flags 0 上述格式中的参数pattern表示一个正则表
  • input 输入框 focus更改样式

    input标签的border和outline 想要实现input在触发焦点时更改样式 通常会想到使用 focus选择器 但当使用border去更改样式时 会发现失效了 input type text focus border 1px sol
  • 内部振荡器、无源晶振、有源晶振有什么区别?

    单片机要运行起来 必须有一个时钟信号 就好像人的心跳 这个时钟信号可以由无源晶振提供 可以由有源晶振提供 目前大部分的单片机也集成了内部振荡器 今天就来聊聊这三者的区别 1 内部振荡器 单片机内部集成的振荡器 一般为RC振荡器 好多人叫 内
  • AlexNet-深度卷积神经网络(CNN卷积神经网络)

    文章目录 深度卷积神经网络 AlexNet AlexNet 模型说明 激活函数选定 模型定义 读取数据集 训练AlexNet 小结 深度卷积神经网络 AlexNet 2012年 AlexNet横空出世 它首次证明了学习到的特征可以超越出手工
  • cJSON.c 和cJSON.h (进行了额外的封装)

    1 cJSON h cJSON h Copyright c 2009 2017 Dave Gamble and cJSON contributors Permission is hereby granted free of charge t
  • EMI原理、测量、解决

  • 进制和编码

    目标 了解计算机中一些必备的尝试知识 了解常见名词背后的意义 1 python的运行方式 交互式运行 脚本式运行 2 进制 2 1 进制的转换 计算机中底层的所有数据都是0101010101的形式存在的 八进制无法直接转为2进制 十进制转其