3.1.1 理解信息表示
所谓的信息表示,是指通过某种事物或逻辑概念来表达信息的含义。文字是一种重要的信息表示法,藉由文字,人类文明的灿烂文化才得以传承下来。关注薯条老师微信公众号[薯条编程],免费领取Python, 爬虫,数据分析,机器学习,深度学习的Python学习资料。
人类文明自发明文字起开始计算,尚不足六千年,在这几千年的人类历史中,人类通过文字传播等方式,创造出了灿烂的人类文明。
人类作为文字的发明者和使用者,通过文字来表示和传达信息,是一种非常自然的方式。但在计算机中,却不能通过文字来表示信息,因为机器无法理解文字。计算机由逻辑电路组成,逻辑电路通常只有两种物理状态:"打开"的状态和"关闭的状态。这两种状态正好可以用数字1和0来进行表示,使用1表示打开的状态,0表示关闭的状态。这种使用数字1和0来表示信息的方法,称为二进制表示法。
那么,为什么这种二进制表示法可以表示信息?举个简单的例子,我们使用文字来描述一段信息,内容如下:
我爱你
因为计算机只能识别二进制,那么为了让计算机能“理解”这段文字,我们可以使用以下二进制来对文字进行代替:
那么“我爱你”在计算机中的二进制表示为:
00 01 11
3.1.2 理解进制表示法
(1) 进制的概念进制是一种带进位的计数方法。生活中最常见的计数方法是十进制表示法,在十进制这种计数方法中,基数为10,有10个基本的数字符号:
在进制计数法中,N进制即表示该类计数法中的基数为N,有N个基本的数字符号。由于阿拉伯数字简洁实用,在大部分情况下都是使用阿拉伯数字来作为基本的数字符号。
所谓的“带进位”,是指数值超出进制中的最大数字符号时,向高位进一。例如十进制中的最大数字符号是9,那向高位进位后的数字变为10。其进位过程可以分解为以下三个步骤:
(1) 数字超出最大数字符号9,向高位进位,数字由1位数变成2位数 (2) 由于是向高位进一,所以高位为1,低位已经进位,继续从0开始计数 (3) 由(1)和(2)可得进位后的数字为10
其它进制的计数法与十进制计数法都是一样的原理,以三进制进行举例,在三进制的计数法中,基数为3,有3个基本的数字符号:
三进制中的最大数字符号是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转换为十进制后的值为:
(2) 二进制与十六进制由3.1.1节中的内容可知,计算机使用二进制进行信息的表示。在二进制计数法中,基数为2,二进制10转换为十进制后的大小为:
在计算机系统中,十六进制也是一种很常见的信息表示法。在十六进制这种计数法中,基数为16,前10个数字仍采用阿拉伯数字,但从10开始,使用英文字母表中的字母A~F进行代替,例如将16进制中的10使用字母A进行代替,将11使用字母B进行代替,以此类推。十六进制的前十个符号:
十六进制的后六个符号:
十六进制不区分字母的大小写,在编程语言中,通常将以0x或0X开头的数字常量作为十六进制,例如0x123F。
计算机只能识别二进制,在处理十六进制的数据时,需要将其转换为二进制来进行处理。对人类来说,最易于理解的是十进制,但十进制与二进制的转换非常麻烦,且二进制的计数法十分冗长,例如表示十进制为255的二进制数,需要使用八位二进制数:
11111111
在十六进制中,一位十六进制数可以表示四位二进制数,例如一个四位的二进制数1111,用十六进制F就可以进行表示。F对应的十进制为15,二进制数1111的值刚好为15:
所以在进行信息表示时,经常使用十六进制作为一种折中的方案。
(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转换为十进制的结果正好为:
十进制小数转其它进制,采用的是“乘基数取整,再顺序排列”的方法,即每次取整数部分,然后再将小数部分与基数相乘,以此不断重复这一过程。
3.1.3 计算机中的信息存储
现代计算机基于冯诺依曼体系,在冯诺依曼体系中,计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成,冯诺依曼体系如下图所示:
其中存储器负责信息的存储,计算机系统将存储器视为一个很大的字节数组,在这个字节数组中按顺序从0开始进行编号:
这里的字节编号即为“地址”。
计算机将字节作为一个最小的可寻址的存储器单位,以及进行信息处理的二进制数字串。
在计算机中,一个字节包含八位二进制数,那么其大小最大为:
11111111
转换为十进制后的大小:
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。
扫码咨询薯条老师:
已有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 回复
那个爬虫用的到这些进制码
薯条老师 评论于 2021-06-14 08:14:49 回复
没用到
访客 评论于 2020-12-22 16:14:43 回复
那个爬虫用的到这些进制码
访客 评论于 2021-05-25 18:00:27 回复
这个好难懂阿
薯条老师 评论于 2021-06-14 08:14:54 回复
还行