Python基础教程

第一章: 环境搭建,安装Python

第二章: 挑选一款趁手的IDE

第三章: 计算机基础知识

第四章: 命令行基础知识

第五章: 从全局把握Python

第六章: Python语言基础

第七章: Python流程控制

第八章: Python数据类型与运算

第九章: Python字符串类型

第十章: Python列表类型

第十一章: Python元组类型

第十二章: Python字典类型

第十三章: Python集合类型

第十四章: Python函数处理

第十五章: Python文件处理

第十六章: Python面向对象

第十七章: Python异常处理

第十八章: Python模块处理

第十九章: Python高级编程

第二十章: Python项目实战

首页 > Python基础教程 > 第三章: 计算机基础知识 > 3.1节: 计算机的信息表示

3.1节: 计算机的信息表示

薯条老师 2020-04-17 16:43:01 245272 8

编辑 收藏

3.1.1 理解信息表示

所谓的信息表示,是指通过某种事物或逻辑概念来表达信息的含义。文字是一种重要的信息表示法,藉由文字,人类文明的灿烂文化才得以传承下来。关注薯条老师微信公众号[薯条编程],免费领取Python, 爬虫,数据分析,机器学习,深度学习的Python学习资料。
人类文明自发明文字起开始计算,尚不足六千年,在这几千年的人类历史中,人类通过文字传播等方式,创造出了灿烂的人类文明。
人类作为文字的发明者和使用者,通过文字来表示和传达信息,是一种非常自然的方式。但在计算机中,却不能通过文字来表示信息,因为机器无法理解文字。计算机由逻辑电路组成,逻辑电路通常只有两种物理状态:"打开"的状态和"关闭的状态。这两种状态正好可以用数字1和0来进行表示,使用1表示打开的状态,0表示关闭的状态。这种使用数字1和0来表示信息的方法,称为二进制表示法。

image.png

那么,为什么这种二进制表示法可以表示信息?举个简单的例子,我们使用文字来描述一段信息,内容如下:
我爱你
因为计算机只能识别二进制,那么为了让计算机能“理解”这段文字,我们可以使用以下二进制来对文字进行代替:

1588230734(1).jpg

那么“我爱你”在计算机中的二进制表示为:
00 01 11

3.1.2 理解进制表示法

(1) 进制的概念进制是一种带进位的计数方法。生活中最常见的计数方法是十进制表示法,在十进制这种计数方法中,基数为10,有10个基本的数字符号:

1588230746(1).jpg

在进制计数法中,N进制即表示该类计数法中的基数为N,有N个基本的数字符号。由于阿拉伯数字简洁实用,在大部分情况下都是使用阿拉伯数字来作为基本的数字符号。
所谓的“带进位”,是指数值超出进制中的最大数字符号时,向高位进一。例如十进制中的最大数字符号是9,那向高位进位后的数字变为10。其进位过程可以分解为以下三个步骤:
(1) 数字超出最大数字符号9,向高位进位,数字由1位数变成2位数 
(2) 由于是向高位进一,所以高位为1,低位已经进位,继续从0开始计数 
(3) 由(1)和(2)可得进位后的数字为10
其它进制的计数法与十进制计数法都是一样的原理,以三进制进行举例,在三进制的计数法中,基数为3,有3个基本的数字符号:

1588230756(1).jpg

三进制中的最大数字符号是2,那么向前进位后的数字变为10。 其进位过程可以分解为以下三个步骤:
(1)数字超出最大数字符号2,向高位进位,数字由1位数变成2位数 
(2)由于是向高位进一,所以高位为1,低位已经进位,继续从0开始计数 
(3)由(1)和(2)可得进位后的数字为10
十进制中的10与三进制中的10并非同等大小,因为其基数不同,在进行进制的大小比较时,可以将它们换算成十进制来进行直观地比较。将其它进制转换为十进制时,需要先掌握一个权值的概念。在进制的权值计算中,第N位的权值为基数的N次方,例如在三进制中,基数为3,那么第0位的权值为3的0次方,第1位的权值为3的1次方。
因为高位的数是由低位的数进位而来的,在进位的过程中以进制中的基数为单位进行进位,这就是所谓的权值的概念。
转换为十进制,需要将各位的数字与权重相乘再进行求和。 那么,三进制的10转换为十进制后的值为:

1588230764(1).jpg

(2) 二进制与十六进制由3.1.1节中的内容可知,计算机使用二进制进行信息的表示。在二进制计数法中,基数为2,二进制10转换为十进制后的大小为:

1588230774(1).jpg

在计算机系统中,十六进制也是一种很常见的信息表示法。在十六进制这种计数法中,基数为16,前10个数字仍采用阿拉伯数字,但从10开始,使用英文字母表中的字母A~F进行代替,例如将16进制中的10使用字母A进行代替,将11使用字母B进行代替,以此类推。十六进制的前十个符号:

1588230781(1).jpg

十六进制的后六个符号:

1588230788(1).jpg

十六进制不区分字母的大小写,在编程语言中,通常将以0x或0X开头的数字常量作为十六进制,例如0x123F。
计算机只能识别二进制,在处理十六进制的数据时,需要将其转换为二进制来进行处理。对人类来说,最易于理解的是十进制,但十进制与二进制的转换非常麻烦,且二进制的计数法十分冗长,例如表示十进制为255的二进制数,需要使用八位二进制数:
11111111
在十六进制中,一位十六进制数可以表示四位二进制数,例如一个四位的二进制数1111,用十六进制F就可以进行表示。F对应的十进制为15,二进制数1111的值刚好为15:

1588230795(1).jpg

所以在进行信息表示时,经常使用十六进制作为一种折中的方案。
(3) 进制间的相互转换将十进制整数转换为其它进制,主要采用的是“除基数取余,再逆序排列”的方法。 具体的计算过程:
1. 用基数整除十进制整数,得到一个商和余数 
2. 再用基数整除商,又会得到一个商和余数 
3. 不断重复第2步,直到商小于1 
4. 将计算过程中的余数按从低到高的顺序排列起来
以十进制5转二进制进行举例:
1.2整除5,得到商2和余数1 
2.2整除商2,得到商1和余数0 
3.2整除商1,得到商0和余数1 
4.将计算过程中的余数逆序排列,则二进制为:101
二进制101转换为十进制的结果正好为:

1588230810(1).jpg

十进制小数转其它进制,采用的是“乘基数取整,再顺序排列”的方法,即每次取整数部分,然后再将小数部分与基数相乘,以此不断重复这一过程。

3.1.3 计算机中的信息存储

现代计算机基于冯诺依曼体系,在冯诺依曼体系中,计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成,冯诺依曼体系如下图所示:

image.png

其中存储器负责信息的存储,计算机系统将存储器视为一个很大的字节数组,在这个字节数组中按顺序从0开始进行编号:

1588231022(1).jpg

这里的字节编号即为“地址”
计算机将字节作为一个最小的可寻址的存储器单位,以及进行信息处理的二进制数字串。 在计算机中,一个字节包含八位二进制数,那么其大小最大为:
11111111
转换为十进制后的大小:

1588231028(1).jpg

3.1.5 最具实力的小班培训

薯条老师在广州有开设线下培训班,小班授课模式,一班最多6个人。也可一对一授课,全程帮助你学好计算机,实现高薪就业。不在广州的同学可提供住宿,也可以报名线上小班,用腾讯会议上直播课。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python中高级爬虫逆向工程师就业班,月薪15K-25K,包拿Offer
(3) Python数据分析+商业分析+数据科学就业班,企业级项目实战,月薪10K-20K
(4) Python量化交易就业班,A股+期货+数字货币量化,月薪10K-40K
(5) Python机器学习+深度学习算法工程师,月薪20-50K

跟薯条老师学习的学生有拿到花生日记,林氏家居,南方电网,京东, 阿里等公司的offer, 学生的最低薪资有6K,最高薪资有18K, 平均就业薪资有11000。

扫码咨询薯条老师:

扫码领学习资料.jpg



已有8位薯条发表了看法:

  • 访客

    访客  评论于 2020-08-04 10:21:36  回复

    老师你好 看到这里发现第6个习题不太明白

    • 访客

      访客  评论于 2020-09-20 21:54:51  回复

      一个字节最大是255

  • 访客

    访客  评论于 2020-08-23 21:54:43  回复

    5.20的二进制是101.0011,还是循环小数?

  • 访客

    访客  评论于 2020-12-22 16:14:38  回复

    那个爬虫用的到这些进制码

  • 访客

    访客  评论于 2020-12-22 16:14:43  回复

    那个爬虫用的到这些进制码

欢迎 发表评论: