计算机编码

python学习的第五天

ぐ巨炮叔叔 提交于 2019-12-02 20:17:22
贾队长今天看了这本《笨办法学python3》,这本书更偏向于实战,我在这里面找到了昨天没有弄懂的字符串和编码的问题。这使我更加迷茫。在这之前,我需要先学一些计算机存储数据的基本知识。现在的计算机只有1和0,把它称为“位”(bit)但是很不方便,所以有了编码,最常见的就是美国信息交换标准代码(ASCII) 0b1011010 90 ord('z') 90 chr(90) 'z' 唉,迷糊了,先休息吧,明天贾队长还有很多工作。革命尚未成功,同志仍需努力啊!! 来源: https://www.cnblogs.com/jiaduizhang/p/11762468.html

一篇文章详解python的字符编码问题

会有一股神秘感。 提交于 2019-12-02 02:55:30
一篇文章详解python的字符编码问题 一:什么是编码   将明文转换为计算机可以识别的编码文本称为“编码”。反之从计算机可识别的编码文本转回为明文为“解码”。   那么什么是明文呢,首先我们从一段信息说起,消息以人们可以理解,易懂的表示存在,我们把这个表示为明文(plain text)。对于说英文的人,纸张上打印的或者屏幕上显示的英文都算是明文。 二:都有什么编码格式? 1:ASCII(占一个字符,只支持英文)   计算机上的数据都是以二进制的形式存储的,1个字节(8比特)可以表示256种状态,英文只有26个字符,再加上一些特殊的字符,使用128个就够了,计算机就可以使用127个不同字节来表示英文文字,这就是ASCII码 2:GB2312(占两个字符,支持6700+汉字)   计算机进入中国后,无法显示中文,一个字节已经被占满了,我国重新制定了一个编码表,将扩展的第八位对应的拉丁文全部删掉,规定一个小于127的字符与原来的意义相同,当两个大于127的字符连接在一起的时候,就表示一个汉字,前面一个字节为高字节,后面一个字节为低字节,这样就可以表示7000多汉字,这种编码叫做GB2312。GB2312是对ASCII的中文扩展 3:GBK和GB18030(GB2312的升级版,支持21000+汉字)   由于汉字的数量太大,GB2312是不能满足需求

C语言基础之ASCII编码(3)

蓝咒 提交于 2019-12-01 20:12:02
什么是字符集和字符编码? 前面我们已经讲到,计算机是以二进制的形式来存储数据的,它只认识 0 和 1 两个数字,我们在屏幕上看到的文 字,在存储之前都被转换成了二进制(0和 1 序列),在显示时也要根据二进制找到对应的字符。 可想而知,特定的文字必然对应着固定的二进制,否则在转换时将发生混乱。那么,怎样将文字与二进制对应起来 呢?这就需要有一套规范,计算机公司和软件开发者都必须遵守,这样的一套规范就称为 字符集 (Character Set) 或者 字符编码 (Character Encoding)。 严格来说,字符集和字符编码不是一个概念,字符集定义了文字和二进制的对应关系,为字符分配了唯一的编号, 而字符编码规定了如何将文字的编号存储到计算机中。我们暂时先不讨论这些细节,姑且认为它们是一个概念,本节中我也混用了这两个概念,未做区分。 字符集的功能:字符集定义了文字和二进制的对应关系 , 为字符分配唯一的编号 字符编码的功能:字符编码规定了如何将文字的编号存储到计算机中 可以将字符集理解成一个很大的表格,它列出了所有字符和二进制的对应关系,计算机显示文字或者存储文字,就 是一个查表的过程。 在计算机逐步发展的过程中,先后出现了几十种甚至上百种字符集,有些还在使用,有些已经淹没在了历史的长河 中,本节我们要讲解的是一种专门针对英文的字符集—— ASCII 编码 。

计算机字符编码基础

感情迁移 提交于 2019-12-01 10:42:42
一、计算机基础 二、文本编辑器存取文件的原理 1、打开编辑器就打开启动了一个进程,是在内存中,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失了。 2、要想永久保存,需要点击保存按钮:编辑器把内存的数据刷到硬盘上。 3、在外面编写一个.py文件(没有执行),跟编写其他的文件没有任何区别,都只是在编写一堆字符而已。 三、Python解释器执行py文件的原理 第一阶段:Python解释器启动,此时就相当于启动了一个文本编辑器。 第二阶段:Python解释器相当于文本编辑器,去打开test.py文件,从硬盘上将test.py的文件内容读入到内存中(小复习:Python的解释性,决定了解释器只关心文件内容,不关心文件后缀名)。 第三阶段:Python解释器解释执行刚刚加载到内容中的test.py的代码(ps:在该阶段,即真正执行代码时,才会识别Python的语法,执行文件内代码,当name=“egon”,会开辟内存空间存放字符串“egon”)。 四、Python解释器与文件本编辑的异同 相同点:Python解释器是解释文件内容的,因而Python解释器具备读py文件的功能,这一点与文本编辑器一样。 不同点:文本编辑器将文件内容读入内存后,是为了显示或者比编辑,根本不去理会python的文法,而Python解释器将文件内容读入内存后,可不是为了给你瞅一眼Python代码写的啥

Python基础 二进制和字符编码

你离开我真会死。 提交于 2019-12-01 08:16:14
二进制定义   二进制是计算技术中广泛采用的一种 数制 。 二进制数 据是用0和1两个 数码 来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师 莱布尼兹 发现。当前的 计算机系统 使用的基本上是 二进制系统 ,数据在 计算机 中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。 二进制与十进制转换   我们已经发现,二进制的第n位代表的十进制值都刚好遵循着2的n次方这个规律 字符编码   通过二进制的知识,大家已经知道计算机只认识二进制,生活中的数字要想让计算机理解就必须转换成二进制。十进制到二进制的转换只能解决计算机理解数字的问题,那么文字要怎么让计算机理解呢?   于是我们就选择了一种曲线救国的方式,既然数字可以转换成十进制,我们只要想办法把文字转换成数字,这样文字不就可以表示成二进制了么?   约定了一个表,把文字和数字对应上,这张表就相当于翻译,我们可以拿着一个数字来对比对应表找到相应的文字,反之亦然。 ASCII码   假如我们就已经有这么一张表了      ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于 拉丁字母 的一套电脑编码系统,主要用于显示现代 英语 和其他 西欧 语言

计算机编码原理

孤者浪人 提交于 2019-12-01 05:39:52
一、字符编码问题 先介绍一下字符编码问题 1.ASCLL与GB2312 由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。 但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。 国标码是汉字的国家标准编码,目前主要有GB2312、GBK、GB18030三种。 GB2312编码方案于1980年发布,收录汉字6763个,采用双字节编码。 GBK编码方案于1995年发布,收录汉字21003个,采用双字节编码。 GB18030编码方案于2000年发布第一版,收录汉字27533个;2005年发布第二版,收录汉字70000余个,以及多种少数民族文字。GB18030采用单字节、双字节、四字节分段编码。 新版向下兼容旧版,也就是说GBK是在GB2312已有码位基础上增加新码位,GB18030是在GBK已有码位基础上增加新码位,各种编码方案中共有的字符编码相同。现在的中文信息处理应优先采用GB18030编码方案。 2.Unicode 全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是

深入理解计算机系统cp1:存储单位与编码

醉酒当歌 提交于 2019-11-30 05:23:21
摘要: 理解计算机是如何存储数据的。 原文: 深入理解计算机系统cp1:存储单位与编码 作者: Chor Fundebug 经授权转载,版权归原作者所有。 1. 存储单位 位:即 bit,表示二进制位,要么是 0 ,要么是 1。它是计算机内部数据存储的最小单位。比如 11010100 共有8个二进制位,是一个8位二进制数。 字节:即 byte,它由8个二进制位构成,即 1byte=8bit,是计算机内部计量的基本单位。一个英文字符占1个字节(8位),一个汉字占2个字节(16位) 字:即word,它由若干个字节构成,是计算机内部进行数据处理和运算的基本单位。字的总的位数称为字长,不同档次的计算机字长是不一样的,比如32位机,它的1个字由4个字节构成,字长为32位,也就是说其CPU一次操作处理的实际位数是32位。同理,64位机可以处理64位。由此可见,计算机的字长越大,其性能越优越。 KB,MB:1024byte = 1KB,1024KB = 1MB。往上还有GB,TB。 PS:数据传输大多以 bit 为单位,比如我们常说的网速100M/s,M/s其实Mbit/s,也就是兆比特每秒,我们还可以写成100Mbps。 2. 编码 2.1 为什么需要编码? 计算机只能理解0和1,无法理解英文、字母、汉字和其他特殊字符,这些字符需要经过编码才能成为计算机可以理解的二进制数。

day2

拜拜、爱过 提交于 2019-11-29 19:18:04
阅读目录 上节拾遗 二进制 字符编码 基本数据类型 回到顶部 上节拾遗 变 量的创建与id 例1:name = 'oldboy' 首先,当我们定义了一个变量name = ‘oldboy’的时候,在内存中其实是做了这样一件事: 程序开辟了一块内存空间,将‘oldboy’存储进去,再让变量名name指向‘oldboy’所在的内存地址。如下图所示: 例 2:两个变量名一个值 提问:当我执行下面这段代码的时候,程序是怎么处理的呢? name1 = 'oldboy' name2 = 'oldboy' 我们猜想会有两种可能: 第一种情况:程序分别在内存中开辟了两块儿空间来存储‘oldboy’这个值,并且让name1和name2指向这两个值。如下左图 第二种情况:由于两个值内容一致,所以程序只开辟一块儿空间存储‘oldboy’,并让name1和name2只想着个值。如下右图 提问:大家来猜测一下会是哪种情况? 其实上面的两种猜想都是对的。正常情况下字符串在内存里就是如我们猜想的第一种情况一样,每一次创建一个变量都会在内存中申请一块儿空间。 但是,python认为一些“看起来像python标识符的字符”和小整数字在开发中是常用的,因此出于节省内存的角度思考,对于这部分字符串和数字做出了优化[-5,257)

计算机网络之数据链路层

一个人想着一个人 提交于 2019-11-29 13:42:58
功能 数据链路层 主要作用是加强物理层传输原始比特流的功能,将物理层提供的 可能出错的物理连接 改造为 逻辑上无差错的数据链路 ,使之对网络层表现为一条无差错的链路。(物理上肯定有一些差错,但是可以通过修改,改为逻辑上无差错) 任务:负责将数据报通过链路从一个节点传输到相邻的节点 三个基本功能: 封装成帧 透明传输 差错检测 封装成帧 基本概念: 将一段数据的前后分别添加首部和尾部,就构成了帧。 注意: 首部和尾部中含有很多 控制信息 (如 检验序列等),它们的一个重要作用是确定帧的界限,即 帧定界 。 透明传输 如果在数据中心恰好出现与帧定界符相同的比特组合,会导致帧提前结束而丢弃后面的数据。所以引入了 “透明传输” 。 基本概念: 透明传输就是不管所传的数据是什么样的比特组合( 透明的,看不见里面的数据 ),都应当能在链路上传送。 基本方法: 字符计数法: 在帧头部使用一个计数字段来标明帧内字符数。 字符填充的首尾定界符法: 在特殊字符前面填充一个转义字符(DLE)来加以区分,以实现数据的透明传输。接收方收到转义字符后,就知道其后面紧跟的是 数据信息 ,而不是控制信息。 数据中有可能出现转义字符,所以要 在转义字符前再插入一个转义字符 。 比特填充的首尾标志法: 由于使用01111110(6个1)来标志一帧的开始和结束,故发送方只要在数据中遇到5个连续的“1”时

python中乱码怎么由来与解决方法

天涯浪子 提交于 2019-11-28 12:53:02
前言 曾几何时 Python 中文乱码的问题困扰了我很多很多年,每次出现中文乱码都要去网上搜索答案,虽然解决了当时遇到的问题但下次出现乱码的时候又会懵逼,究其原因还是知其然不知其所以然。现在有的小伙伴为了躲避中文乱码的问题甚至代码中不使用中文,注释和提示都用英文,我曾经也这样干过,但这并不是解决问题,而是逃避问题,今天我们一起彻底解决 Python 中文乱码的问题。 基础知识 ASCII 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。 他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上0×10, 终端就换行,遇上0×07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0×20以下的字节状态称为”控制码”。他们又把所有的空 格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号