进制和编码

news2024/12/23 16:21:38

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

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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/995599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[XSCTF]easyxor

查看,main函数,首先是将输入的数据与key中的字符依次异或 在这个循环里,将异或得到的结果每次减去1,同时在数组里写上1,往后遍历数组 直到异或得到的结果减为0,在数组中写一个0进行标记 最后比较数组是否与…

百度飞桨(厦门)人工智能产业赋能中心签约,共创人工智能产业协同服务新生态...

9月8日,第二十三届中国国际投资贸易洽谈会在厦门正式开幕。 当日,厦门市思明区政府和火炬管委会,与百度正式签约,联手共建百度飞桨(厦门)人工智能产业赋能中心。思明区委书记林重阳,厦门市工信局…

【 NTR-domain ;NTR-C345C】

tissue inhibitors of metalloproteases (TIMP) TIMP NTR-C345C HPX-binding-domain [ MMP CAT(FN2)PEX (hemopexin) ] [ MMP-9-inhibitor a-2M (NTR-C345C) ] netrin Laminin-GLaminin-EGFNTR-domain

软件测试报告有什么用?

报告类型 不同的报告类型有不同的报告用途,以下分类别进行分析 1、登记测试报告 可以用于软件产品的增值税即征即退、软件企业的双软评估以及计算机系统集成资质的材料 2、鉴定\确认测试报告 可以用用于政府项目申报、高新认证、项目结题、创新产品认定、各类政…

c++11 override 和 final 关键字

1. final:修饰虚函数,表示该虚函数不能再被重写 如果一个类不想被继承:下面分别提供了c98 和 c11的不同写法 c 98 的写法: c 11 的写法:final最终类 2. override: 检查派生类虚函数是否重写了基类某个虚函数&#xff…

机器学习——K最近邻算法(KNN)

机器学习——K最近邻算法(KNN) 文章目录 前言一、原理二、距离度量方法2.1. 欧氏距离2.2. 曼哈顿距离2.3. 闵可夫斯基距离2.4. 余弦相似度2.5. 切比雪夫距离2.6. 马哈拉诺比斯距离2.7. 汉明距离 三、在MD编辑器中输入数学公式(额外&#xff0…

C++数据结构X篇_11_C++栈的应用-后缀表达式求解

上篇C栈的应用-中缀转后缀中我们介绍了我们所熟知的中缀表达式转为后缀表达式,那么如何通过后缀表达式获得原表达式的值呢?本篇将会参考博文栈的应用-后缀表达式求解介绍计算机是如何基于后缀表达式计算的? 文章目录 1. 后缀表达式求解计算规…

【MySQL】一文带你理解索引事务及其原理

MySQL- 索引事务 文章目录 MySQL- 索引事务索引操作索引原理 事务操作并发执行 索引 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。 通俗来…

C++项目实战——基于多设计模式下的同步异步日志系统-④-日志系统框架设计

文章目录 专栏导读模块划分日志等级模块日志消息模块日志消息格式化模块日志消息落地模块日志器模块日志器管理模块异步线程模块 模块关系图 专栏导读 🌸作者简介:花想云 ,在读本科生一枚,C/C领域新星创作者,新星计划导…

新知同享 | Web 开发性能提升,优化体验

更加强大且开放的 Web 可以简化开发工作并支持 AI 一起来看 2023 Google 开发者大会上 Web 开发值得重点关注的升级与成果 了解 Web 如何实现加速开发,更加便捷 精彩大会现场一览 Web 开发不断发展,每年都带来性能提升和功能迭代,开启丰富多…

【多线程】volatile 关键字

volatile 关键字 1. 保证内存可见性2. 禁止指令重排序3. 不保证原子性 1. 保证内存可见性 内存可见性问题: 一个线程针对一个变量进行读取操作,另一个线程针对这个变量进行修改操作, 此时读到的值,不一定是修改后的值,即这个读线…

用python实现基本数据结构【01/4】

说明 如果需要用到这些知识却没有掌握,则会让人感到沮丧,也可能导致面试被拒。无论是花几天时间“突击”,还是利用零碎的时间持续学习,在数据结构上下点功夫都是值得的。那么Python 中有哪些数据结构呢?列表、字典、集…

Linux 下spi设备驱动

参考: Linux kernel 有关 spi 设备树参数解析 Linux kernel 有关 spi 设备树参数解析 - 走看看 Linux SPI驱动框架(1)——核心层 Linux SPI驱动框架(1)——核心层_linux spi驱动模型_绍兴小贵宁的博客-CSDN博客 Linux SPI驱动框架(2)——控制器驱动层 Linux SPI驱…

如何进行SEO优化数据分析?(掌握正确的数据分析方法,让您的网站更上一层楼!)

在互联网时代,SEO优化已经成为了每一个网站运营者必备的技能。而在SEO优化中,数据分析更是至关重要的一环。在本文中,我们将会详细介绍如何正确的进行SEO优化数据分析,让您的网站更上一层楼! 数据分析的重要性 数据分…

ROS2-IRON Ubuntu-22.0 源码下载失败解决方法 vcs import --input

ROS2 一.ROS2 IRON环境搭建1.设置系统字符集为UTF-82.将RO2 apt 库添加到系统中3.添加ROS2 GPG key4.添加ROS 2 的软件源安装开发工具 二.下载ROS2sh源代码编译 一.ROS2 IRON环境搭建 虚拟机系统:Ubuntu22.04 虚拟机:VMware-player-full-16.2.5-2090451…

YOLOv5算法改进(15)— 更换Neck之AFPN

前言:Hello大家好,我是小哥谈。在YOLOv5中添加AFPN(Adaptive Feature Pyramid Network)可以提高目标检测的准确性。AFPN是一种用于目标检测任务的功能增强模块,它能够自适应地融合来自不同层级的特征图,以提…

scss文件自动导入

正常使用scss文件,需要先导入再使用内部变量,自动导入可以免除手动导入的步骤,直接使用内部的变量。 步骤:装包 -> scss文件 -> 配置 1. 装包 npm i sass -D // -D 仅在开发环境中依赖 2. 新增一个 scss文件&#xff…

设计模式之单列模式

单列模式是一种经典的设计模式,在校招中最乐意考的设计模式之一~ 设计模式就是软件开发中的棋谱,大佬们针对一些常见的场景,总结出来的代码的编写套路,按照套路来写,不说你写的多好,至少不会太差~ 在校招中…

Java的环境配置

目录 window系统安装java下载JDK配置环境变量JAVA_HOME 设置PATH设置CLASSPATH 设置测试JDK是否安装成功 Linux,UNIX,Solaris,FreeBSD环境变量设置流行JAVA开发工具使用 Eclipse 运行第一个 Java 程序 window系统安装java 下载JDK 首先我们…

OLED透明屏触控:引领未来科技革命的创新力量

OLED透明屏触控技术作为一项颠覆性的创新,正在引领新一轮科技革命。它将OLED显示技术与触摸技术相结合,实现了透明度和触控功能的完美融合。 在这篇文章中,尼伽将通过引用最新的市场数据、报告和行业动态,详细介绍OLED透明屏触控…