第2章 我们所说的数据类型呢, 还有那些最基本的运算符这些东西。
把一门编程语言学扎实, 最有效的法子就是把基础知识看透、摸透, 还得自己动手去实操。这章先讲讲基础知识里的保留字和标识符是咋回事, 接着再说说在具体的编程环境里, 怎么使用变量以及不同种类的数据类型。
2.对于保留字以及标识符, 这里要讲的内容是编号为一的章节。
微课视频
在程序设计语言之中, 大家都要接触到保留字和标识符这两种东西。关于保留字, 它在程序设计语言里通常是有特定的含义, 也会用在特定的地方。
这些保留字里面, 有一部分是语法结构里的关键部分, 另一部分呢, 虽然它们目前还没有被应用到当前的语法中去, 但是考虑到程序设计语言之后可能会有扩展性的需要, 所以就提前就把它们定义为保留字了。另外, 标识符是用来充当程序当中某一种元素的名字的字符串, 或者是用来标示源代码文件里面某个对象的名字的。
接下来我们要来仔细地讲一讲, 那个叫做保留字的, 还有那个叫做标识符的。
2.1.1 保留字
保留字是已经被赋予特定意义的一些单词, 在开发程序的时候, 是不可以先把这些保留字拿来作为变量、函数、类、模块, 还有其他的对象的名字来使用的。具体的保留字有哪些, 是可以查看表2.1来得知的。
在表2.1中, 存在着那些被称之为保留字的词汇。
学习笔记
其中, 所涉及到的那些保留字是必须严格区分英文字母的大写和小写的。就拿实例来说, 比如True这个词还有if这个词, 它们都属于说是保留字的行列。
然而, 像写成大写形式的TRUE这个单词以及大写形式的IF这个单词, 那就并不被归入到保留字的范畴之内了这一点, 可以从图2.1以及图2.2里面看得非常清楚明白。
图2.1显示的是这种情况, 那就是True这个东西它是作为一个关键字来保留的, 而true它并不是属于那种被保留的关键字的范畴。
在图2.2中显示的情况是, if这个单词被规定为保留字, 但是, IF这个单词是不属于保留字的范畴之内。
学习笔记
那些保留字, 你可以通过在IDLE这个地方, 输入下面写出来的两行代码的方法来查看到:
运行出来的结果, 就如图2.3所展示的那样。
在图2.3当中, 显示出来的一些保留字。
学习笔记
在程序员去编写程序代码的时候, 如果他们不小心把那些属于语言本身规定的保留字拿去当作模块的名字, 或者是类的名字, 又或者是函数的名字, 还有变量的名字来使用的话, 那么系统就会跳出显示错误信息为空格的样子。
具体到下面给出的那一段代码里面, 开发者确实就把那个叫作if的保留字拿来作为一个变量的代号了:
当程序跑着的时候, 会出现图所示的这种错误的提示信息, 具体情况得看图, 图中的编号是2.4。
当在使用保留字作为变量名时, 就会出现图中的错误信息, 如下图所示。
2.关于1.2部分的内容, 主要是在讨论什么是标识符。
我们可以很直接地说, 标识符这种东西, 其实就是给一个东西起个名字。这就像说每一个人都有属于自己的那个称呼一样。它主要被用来指代变量、函数、类、模块, 还有其它各种对象的名称问题。
关于标识符的命名, 其具体的规则是这样来规定的。
该组合是由字母以及下画线, 就是那个下画线“_”和数字这些所构成的。同时规定的是第一个字符是不可以为数字的。在当前这个阶段, 在只允许使用ISO-Latin这些字符集合中的字符A至Z和a至z。
在系统里那些不能被允许拿去用的特定标识名称。
比如说, 接下来这些内容是属于可以使用的标记名的情况。
这是一个目前不被允许的标识符, 它属于非法范畴。
学习笔记
在这里面用来做标识的字符,是不能包含空格、@符号、%符号和$符号等特殊类型的字符的。
区分字母的大小写。
在中,标识符中的字母是严格区分大小写的。两个同样的单词,如果大小写格式不一样,所代表的意义是完全不同的。例如,下面3个变量是完全独立、毫无关系的,就像相貌相似的三胞胎,彼此之间都是独立的个体。
在中, 以下画线开始的标识符会有特殊的含义, 所以大家平常应该避开去用那些相似的标识符。。
用单下画线打头的标识符, 就比如像这样的情况所示, 它代表的含义是那个类的属性没法直接进行访问。还有另外一个需要注意的地方是, 这种形式的标识符也是不能够通过类似于“from xxx *”这种写法来进行导入操作的。
标识符如果是以双下画线开头的, 比如说__add这种情况, 那就表示这个类里面的私有成员。
»那些以双下画线开头并且又以双下画线结尾的, 是属于专门的标识, 比如说, “()”这个形式, 是用来表示构造函数的。
学习笔记
在编写程序的时候, 是允许大家去使用汉字来做标识符的。打个比方, 就像写“我的名字='明日科技'”这句话一样, 在电脑运行的过程中, 系统是不会报错的, 大家可以看看图2.5里显示的样子。不过呢, 从长远来看, 我们还是非常建议各位读者朋友, 能不用汉字就不用汉字, 最好别用汉字来充当标识符。
如图所示的图2.5展示了使用汉字作为标识符的情况。
2.2 变量
微课视频
在程序设计语言这个范畴里面, 变量是一个基础的元素同时也是重要的一个元素, 打个比方说像是建造一栋大楼的情况, 水泥就是一个基础性的材料, 那么由此可见构建一个大型的软件应用系统的时候它肯定是需要定义和使用各种各样不同类型的变量的, 接下来我们就去介绍关于变量的那些相关的概念还有具体的操作方式。
2.2.1 理解中的变量
在中文语境里面, 那个东西如果严格来讲的话, 应该叫做名字, 当然也可以把它理解为是一个标签。当你把一个值, 比如说“学会还可以飞”这个值赋值给一个特定的名字的时候。这就被称为变量。在绝大多数编程语言里面, 大家都把这种行为称为“把值存储在变量中”。
这其中的意思就是, 说在计算机内存里面的某个具体的位置当中, 已经存在了字符串序列“学会还可以飞”。
其实你并不需要去搞明白这些串究竟是在哪个具体的位置上存在的, 你所能要做的事情就是把这个名字给说出来而已, 这个说出来的东西就是代表着当前所讨论的这个串的名字, 然后呢, 接下来你就可以使用到这个起好的名字对这一个串行进行一个引用的动作了。
这整个过程就跟快递员去取快递是差不多的, 内存这个东西就好像是一个规模特别大的货物架, 然后在代码里面去定义一个变量, 那就跟给那个装快递的小盒子贴上标签是一样的。你懂吗? 这些快递最后都是存放到那个货物架上去的, 而且在上面还会附着写有客户名字的一个标签。
然后当那个客户过来想要取他的快递的时候, 他是完全不需要知道这些包裹具体是怎么存放在那个大型货架上面的哪个确切位置的, 根本用不着去操心这个。他只只需要提供一个自己的名字就行了, 对, 就是提供一下名字, 然后这个快递员就会根据这个名字把你的快递交给你了。
变量这个事物, 也是一样的情形,就是说不一定非得要把存储在内存空间里面的具体地址搞得一清二楚, 只要能够记住给这个存储空间取的那个名称, 然后在接下来的时候去调用这个名字就完了。
2.关于变量这个事儿的说明, 是在二零二二点二的这个地方。
在中, 不需要先声明变量名及其类型, 直接赋值即可创建各种类型的变量。但是变量的命名并不是任意的, 应遵循以下几条规则。
那个变量的名字, 它必须得是一个合法的标识符符号。
在给变量起名字的时候, 你不能用那些已经被规定的保留字。
慎用小写字母l和大写字母O。
应该选择具有现实意义的词汇来作为变量的名称。
给变量去赋值这一事儿, 它能够通过等号这个符号(也就是那个等于号=)来达到目的, 其具体的语法样子如下:
比如, 我们要去创建一个整型变量的时候, 然后呢, 再给这个变量去赋值, 让它等于505, 这样子的话, 是可以使用下面所提供的这样的一条语句来做到的。
按照这种办法去建立的变量, 它就是属于那种数值类型的变量。要是直接给这个变量去分配一个字符串形式的值的话, 那就会让这个变量变成字符串类型了。比如下面所展示的这个语句:
另外, 它是一种动态类型的语言, 这句话的意思是, 变量的类型是可以随时发生变化的。举个例子, 咱们可以在IDLE里面去做一个操作。先创建一个变量, 然后给它赋上一个值, 这个值是字符串“生化危机”。
接着输出一下这个变量的类型。这时候大家能看到, 它显示的是字符串类型。再接着把刚才那个变量的值改掉, 改成数值505, 再去输出它的类型。这时候会看到, 它已经变成了整型。具体的执行过程就是这样展示出来的。
学习笔记
在语言里面, 你可以使用那个叫做type的内置函数, 这个函数能够返回变量的具体类型。
在中, 允许多个变量都指向同一值, 这一点是非常明确的, 所以, 我们这里举一个具体例子来看待此事, 也就是把两个不同变量分别赋予那个值为数值2048的情况发生之后, 再去利用系统内置提供的那个函数名称为id(这个带括号的形式)去查询并获取各变量在计算机中所占内存空间的具体位置地址出来查看时你会发现, 通过这样操作所拿到的结果数据是完全一致的, 其背后实际发生的执行流程和状况详情如下所示:
学习笔记
使用内置函数 id (), 就可以把变量指向的内存地址给弄出来并返回。
常量是在程序运行的时候, 它的值不可以发生变的量。就像是现实生活里大家的居民身份证号码, 还有数学运算里面的圆周率这两个例子。这些东西都不会改变。所以, 它们都能够被定义为常量。
在现在的版本中, 系统是没有提供专门用来定义常量的保留字的。可是按照PEP 8这个规范的要求, 常数应该是由大写字母以及下画线来组成的。不过在实际的项目开发过程中, 一个常量在完成首次赋值行为之后, 它依然有可能被其他的代码进行修改。
2.3 基本数据类型
在内存中用来保存数据的时候, 数据类型可以分成多种。打个比方说, 一个人的姓名可以用字符型来保存, 年龄能够用数值型来保存, 至于已婚还是未婚这个情况, 就可以使用布尔类型去表示。这些都属于系统直接提供出来的基本数据类型。下面就要对这些基本数据类型一个一个地进行比较详细的介绍。
2.关于3.1这个数值类型的话题。
微课视频
在咱们搞程序开发的时候, 经常会用到数字来记录一些东西, 比如游戏的得分,网站的销售数据, 还有网站的访问量啊这些信息。
在这个环境里面, 是提供了一个叫做数值类型的东西, 用来存这些数值的, 而且这种类型是不可改变的啥意思, 就是如果你要修改变量里的这个值的话, 那系统会先把这个新的值存到内存里去, 然后再让这个变量指向一个新的内存地址。
在中,数值类型主要包括整数、浮点数和复数。
1.整数
整数这个类型, 是用来表示那些数值里没有小数部分的情况的。在这个环境里, 整数包括了正整数、负整数和数字0。
另外, 它所占的位置数目是没有固定限制的, 如果遇到超过了计算机本身能够处理的范围的时候, 系统会自动使用高精度计算的方式来解决, 所以, 如果用户想要设定一个超级大的整数, 只需要把所有的位数全部写出来就可以了。
整数类型包括十进制整数, 还包括八进制整数, 另外还有十六进制整数以及二进制整数。
十进制整数。
对于十进制整数的呈现形式, 咱们大多数人实际上都是有着特别深的了解的, 就像是看到下面列出来的这些数值一样, 它们无一例外, 全部都是属于那种有效的十进制整数类型的存在。
运行结果是如下图所示的图2.6, 这是在IDLE中间接完成的。
图2.6 有效的整数
学习笔记
十进制的整数, 它不能拿0作为那个开头, 当然了, 如果这个数就是单独的0的话, 那就另当别论了。
这个属于就是那种八进制的整数。
八进制的整数是由数字0到7来组成的, 它的进位规则是逢八就向前进一位, 并且这些数是要以0o作为开头的, 比如有一个数是0o123, 如果把它转换成十进制的整数的话, 那么这个结果就是83。
学习笔记
在 3.x 里面, 对于八进制整数的表示方法, 你必须以 0o/0O 开头。这与 2.x 是不同的, 在 2.x 里面八进制整数是可以直接以 0 开头的。
十六进制整数。
这种由从0到9还有从大写A到大写F这些字符凑成的整数, 在大家眼里叫作十六进制整数, 它那种数字往上加的规矩挺特别的, 专门遵循叫做“逢十六进一”的原则, 并且那些用开头带有小写字母x或者大写字母X的数来表示的方式, 比如你看到的以0x开头的25, 它在转换成十进制整数之后就是37这个数, 再比如另一个例子, 它转换成十进制整数以后是45086这个数字。
学习笔记
十六进制的整数, 它必须是以0X或者是0x来作为开头的。
这就是二进制整数的表现形式。
二进制这种整数, 它只用0这一个数字和1这一个数字作为它的基数, 在进位的时候所遵守的规则被称为“逢二进一”, 比如我们看到的101这一串数字, 把它转换成十进制整数那就是5, 还有像1010这种写法, 转换成了十进制整数之后是10。
2.浮点数
浮点数这个家伙, 它是由整数部分和小数部分这两块拼起来的, 之所以要这么规定, 主要是为了能够处理那些带有小数点的数, 比如说一点四一四, 零点五, 负一点七三二, 还有三点那个点啦等等这些例子, 再一个就是, 如果你愿意的话, 浮点数也可以采用科学记数法来进行表示, 像是二点七e二, 负三点一四e五, 以及六点幺六e负二次方才算是这类情况的典型代表。
学习笔记
当大家在运用浮点数来展开具体的计算行为的时候, 有可能会面临小数的具体位数不够清晰和明确这样的问题状况, 就拿把0.1跟0.1进行相加这个例子来说明事情, 我们是可以拿到我们心里想要的那个结果也就是0.2的, 可是当我们去执行把0.1加上0.2的这种操作手段的时候, 最后呈现出来的结果却是0.2(这里原本期待获得的正确目标值为0.3), 那么具体的整个处理和执行的流程细节情况如下所示。
针对这样一种情形来说的话, 在所有的语言程序里面都是会存在这样的一种问题的, 所以说咱们现在可以先把那些多出来的小数点后面的位数给忽略掉就好。
咱们要根据那个人的身高还有体重这两个数据, 来算出他的BMI这个指数。
第一步是在IDLE环境里新建一个.py格式的文件, 第二步是给这个文件添加代码, 其中需要设置两个变量, 第一个变量用来装身高数值并且单位是米, 第二个变量用来装体重数值并且单位是千克, 接下来的步骤就是套用BMI的计算公式“BMI=体重/(身高×身高)”来求值, 具体的程序编写过程见下面的示例。
学习笔记
上面的代码的作用, 仅仅是为了让大家去看到浮点数在实际里面是怎么用的, 涉及的源码部分呢, 我们就按照原来的样子给输出出来, 这里面的str()这个函数, 它的主要功能是用来把数值转换成字符串的类型, 而if语句则是被用来做条件判断方面的事情, 要是你希望了解更多关于函数以及条件判断这样的一些知识和内容的话, 请你去查看后面的那些章节。
运行结果如图2.7所示。
图2.7 根据身高、体重计算BMI指数
3.复数
它和数学里面那个复数的样儿是彻底的相同点, 都是由实部还有虚部这两个部分给构成的, 并且在使用的过程里头, 会用字母j或者是大写的J来代表这个虚部。当需要表示出一个具体的复数值的时候, 操作的方式可以是把它的实部还有虚部直接加到一起。
打个比方来说吧, 如果一个复数的实部所代表的数值是三又分之一四或者说是百分之十四点后三, 而它的虚部对应的值则是二十五点一后面跟个小写字母j, 那么这个完整的复数在形式上就会写作将前者的数值与后者的带有j标记的数值进行加法连接后的样子。
2.在第3.2节的内容中, 涉及的是关于字符串这一种类的基本介绍。
微课视频
字符串其实就是那种连续的字符序列, 它基本上是可以代表计算机里面所有能用到的字符的一个大集合, 在咱们讨论的那套体系里面, 字符串被规定成是一种不能随便改动的序列类型, 所以平常大家写东西的时候, 一般就会用单引号把这个串括起来, 或者用双引号把它围住, 也有可能用三个单引号包一块儿, 又或者用三个双引号凑一起弄起来, 这三种不同的引号用在哪其实意思都是一样的, 没哪边更高明或者更有特殊含义, 纯粹就是在书写的外观和样子上有一些细微的差别而已。
在这当中, 单引号括起来的那一段字符内容得保证是在同一行里面的, 至于双引号包裹着的那些字符, 也同样需要被安排在同一个行上不可断开, 而对于三引号所包括着的字符部分的话, 它是允许跨到多个连续的行上去显示的。
输出那些用来给人启发和警示的名句以及格言。
定义三个字符串类型的变量, 并且应用打印函数来输出内容, 相关代码具体如下:
程序的运行结果, 是可以在图2.8里面看得到的。
在图2.8里面, 展示了使用三种不同的形式来对字符串进行定义。
学习笔记
字符串的开始字符和结束字符所使用的引号的形式, 必须要保持一致。另外一事情, 是当情况需要去表示那些结构比较复杂的字符串的时候, 人们还允许使用那种引号的嵌套用法。举例说明一下, 下面列出的这些字符串数据内容, 也都是具备合法性的。
输出101号坦克。
在IDLE中创建一个名称为tank.py的文件, 然后在该文件中输出一个表示字符画的字符串,因为该字符画有多行, 所以需要使用三引号作为字符串的定界符。
具体的运行结果显示在图2.9当中。
我们可以看到图。9, 这个图表展示的是输出关于101号坦克的情况。
学习笔记
当输出的时候涉及到字符画的情况的话, 大家是可以选择直接使用搜狗输入法所提供的那个字符画功能来实现输出的这样的操作的。
在该字符串里面, 还支持使用转义字符。所谓转义字符, 就是指使用反斜杠“\”来对一些特殊字符进行转义处理。常用的转义字符及其说明, 如表2.2所示。
在表2.2中, 列出了经常被用到的那些转义字符, 同时也给出了一些关于它们的说明。
学习笔记
把字母r, 或者把这个字母换成大写, 也就是R, 放在那个用来规定字符串范围的符号的前面, 那么, 这个字符串就会原封不动地直接显示出来, 里面那些本来是用来进行转义操作的字符, 就不会再去进行什么转义了, 举个例子来说的话, 如果是去输出那个用双引号包围起来的“失望之酒\x0a机会之杯”,它里面的换行符是正常的被输出出来了, 但如果是在前面加上了r变成了“r"失望之酒\x0a机会之杯"”这样, 它就会原样输出了, 具体的运行效果是什么样子的, 大家可以去看一下图2.10里展示的。
图2.10 转义和原样输出的对比
2.这是3.3节, 内容是关于布尔这种类型。
微课视频
布尔数据类型, 这个东西, 主要是派来干一个活儿, 那就是给真假这两个值, 做一个表示作用的。在编程语言内部, 像True和False这样的标识符, 它们会被程序去解释成布尔值的形态存在着的。
还有另外一种情况需要说明一下, 就是说那个布尔类型的取值, 它可以变成数值类型里面的东西来进行处理使用的,在这种转换当中, 真值部分, 也就是True这一项来说, 它就相当于是数字1的存在了, 而假值那一部分也就是False, 它就等于就是0这个数字了。
学习笔记
那个东西里头面的布尔类型的那个值, 它是可以进行那种数值上面的计算的。举个例子来说, 就是如果执行“False + 1”这个操作的话, 最后运行的出来的结果就会是数字1。然而, 我们平常是不建议去对布尔类型的值进行这种数值运算的。
在当前的环境当中, 所有的那些对象都是可以被拿去进行真值测试的。不过要提醒大家的是, 只有下面所列举出来的那几种特殊情况, 它们计算出来的结果才会是假。至于剩下的那些对象, 不管是在if语句里面使用, 还是在while语句里面去处理, 它们全部都会表现出为真的样子来。
它可能会被设置为False或者None。
那个数值里的零, 这其中包括了数字0、还有像0.0这样的小写形式的零, 再不就是虚数里的那个0j了这种类型。
所谓的空序列情况, 这个情况里面还包涵了字符串、包涵了空元组、包涵了空列表、也包涵了空字典。
对于自定义对象的实例, 如果其方法返回的是False, 又或者, 它的这个方法返回的结果是0的话。
2.3.4 数据类型转换
微课视频
它是一种动态类型的语言, 这种语言也常被称作是弱类型的语言, 虽然在很多情况下并不需要事先去把变量的类型给声明出来, 但是有时候你仍然必须要进行类型的转换操作, 就拿那个用来根据身高和体重来算出一个BMI指数的例子来说吧, 如果你打算要通过一个叫做print ()的函数去把那句提示性的文字“您的身高: ”还有那个浮点型的变量的值一起打印出来, 那么你就得先把那个浮点型的变量给转换成字符串的类型才行, 不然的话你就会看到像图2.11里显示出来的那种错误效果。
当字符串变量和浮点数这种类型的变量被连接在一起的时候, 系统会报错, 这一点在第2.11号图片那里有说明。
在内容里面, 给出了像表2.3中列出的那些数据类型转换函数, 还有它们的具体说明。
这个表格里头的数字是2.3, 列出了那种叫数据类型转换的函数, 还带了说明。
模拟超市当进行抹零结账这类行为时候的情景。
首先在IDLE里面去做一个操作, 去创建一个新的文件, 这个文件的名称要以那个点加py来结尾, 先不管名称具体是什么, 反正要符合规范, 在那个被创建好的文件内部, 第一步要把里面所有商品各自对应的钱数加起来, 也就是进行累加的计算动作, 把最终的商品总金额这一个数字值给算出来, 并且把这个计算完成的总金额数值转换成字符串的类型然后把它输出去, 第二步是要用到叫int的这个函数, 把这个本来是小数类型的变量给它变成整数类型, 这么做的目的就是为了实现把小数后面那些零头全都砍掉的意思, 也就是俗称的抹零处理, 然后再把处理过之后的数字也转换成字符串的形式再输出一次, 具体的代码写法是这样子的。
学习笔记
前面给出的那些代码仅仅是一部分, 至于想要把全部的代码统统拿到手的话, 大家完全可以到所提供的资源包里面去进行查找。
运行结果的情况是这样的, 具体如图2.12所示。
如图2.12所展示的那样, 我们这里是在模拟一个超市里面为了抹掉零钱而进行的结账行为。
学习笔记
把非数字字符串给整型的, 做数据类型转换的时候, 图2.13显示的就是那个错误。
在图2.13中我们可以清楚地看到, 当人们尝试把那些不具备数字含义的字符文本强行转换成为整型数据的时候, 系统会直接报错。
2.4 进制数
这一节的主要任务是给大家介绍进制, 而进制呢, 其实就是计算机用来表示数据的一种方式。所谓N进制的数, 是可以用从0开始一直到N减去1这么多个数字来表示的, 如果超过了9这个数字的话, 那么后面的数值就会用字母A到F来进行表示。
2.4.1 二进制
二进制其实是源于计算机中的开关机制演变过来的, 在电脑里头主要用来表示电信号, 也就是高低电压两种状态, 其中高电压对应数字1, 低电压对应数字0。
虽然说是计算机的一个基本概念, 不过我们在进行编程操作的时候是不会去用二进制的, 主要原因就是二进制实在太麻烦,以数字10000为例, 它写成二进制的话会特别长, 这就导致大家记忆起来困难, 书写起来也不方便。
2.第四点二小节讲的是八进制。
在早期的时候, 计算机只支持二进制这种方式, 但是二进制这个东西让人记起来很麻烦, 输入起来也很费劲, 所以人们想出了一个办法来用一个数值把东西表示出来, 因为如果只用二进制的话, 数字会变得特别长, 后来, 有人就把三个二进制位分成一组来进行操作, 然后依次地从000到111这些组合里,用数字0到7来表示他们, 这样的一个组里面包含了8个不同的值, 因此这种进制就被叫做八进制, 而在计算机体系里面, 我们把二进制称之为它的最小的那个基本单位, 并且把这个单位称呼为比特位。
把八个位组合起来, 就能组成字节型。一个字节, 用二进制数来表示它是255。十进制下面它也就是对应的255。
因此, 这个类型的取值范围就是从0开始到255结束。中间一共包含了256个不同的值。
2.第 4.3 部分讲的是十进制。
十进制, 就是咱们平时日常所用的那种自然数值。这个阿拉伯数字, 它从0一直到9总共有10个值。每一个十进制的数值, 当咱们看到它的时候, 就能够立刻地认出来, 而且也知道它的值到底有多大, 根本就不用去进行计算。所以, 在编程的这个时代里面的代码输入之中, 用得最多的其实就是十进数值了。
2.第4点, 后面的第4个编号叫做十六进制。
原来用3个二进制位来表示数据的话, 那个范围其实还是非常大的, 再往后发展大家就干脆规定说把4个二进制位放在一起当成一个数来看待, 因为这4个位组合起来总共有16种不一样的情况, 所以这种计数方式就被叫做十六进制了, 除了平时用的从0到9这些数字以外, 它还额外地加上了A、B、C、D、E、F这几种符号出来, 一共凑满16个不同的值用来进行表示。
在使用那种能够进行十六进制编程的语言的时候, 大家对于十六进制的数值一般是这样输入的, 比如说是$FF、0xFF或者是FFH这些形式。
十六进制这个东西, 现在的人用得挺多的。你要是看从0到255这些数字, 用十六进制去表示, 那也就可以只用两个FF这两个符号就搞定了。然后再看看短整数型的那个最大值, 它是65535, 这时候你要用十六进制去写, 那就需要用到4个FFFF这四个符号了。
如果是那个通常说的整数型, 它的最大值, 那就更需要8个这样子的符号才够了。更复杂一点, 就是那些占了好多个字节的数据, 你要是依然打算用十六进制来表示的话, 道理也很简单的, 就是每一个单独的字节, 都还是只能用两个符号来表示这个情况罢了。
2.关于进位这个问题, 它是和进制息息相关的。
在计算机知识领域, 大家经常会遇到关于二进制、十进制、八进制以及十六进制的讨论, 而我们要清楚它们之间的进位规律其实就是这么回事。
它是由数字0和数字1组成的, 并且遵循满二进一这样的一种规则。
八进制:0~7组成,满八进一,以0开头。
十进制:0~9组成,满十进一。
十六进制:0~9和组成,满十六进一,以0x开头。
2.5 算术运算符
微课视频
运算符是一些特殊的符号,主要用于数学计算、比较大小和逻辑运算等。运算符主要包括算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符和位运算符。使用运算符将不同类型的数据按照一定的规则连接起来的式子称为表达式。
打比方说, 把算术运算符拿来连接的式子, 它就叫做算术表达式;用逻辑运算符来连接的式子呢, 它就被称为逻辑表达式。下文的内容会去对一些常用的运算符进行介绍。
算术运算符其实就是用于处理加、减、乘、除这些四则运算的符号, 它在对数字进行处理的时候被使用到的次数是最多的。具体的那些常用的算术运算符, 大家可以参考表2.4中所显示的内容。
关于表2.4, 其内容是常用的算术运算符。
学习笔记
在进行算术运算的时候, 要是用那个取余符号, 也就是百分号这个符号去求余数的话, 万一那个用来做除法用的数, 它就是除数嘛, 它是位于第二个操作数的位置上的, 要是它是个负数的话, 那么最后能够拿到手的那个结果数值, 照样也会是一个负数。
算术运算符能够直接针对数字展开数学运算, 以下是关于如何使用这些符号对数值进行计算的一个具体案例说明。
可以看到的就是图2.14所呈现出来的那种状态, 因为它是运行结果的具体体现。
图2.14, 显示的是那个运行得出的结果。
算术运算符其实也可以拿来对变量做运算,那么下面这里有一个例子嘛, 这个例子的情况就是拿着变量a、b和c一起去进行了计算。
最终所显示的运行结果, 在图2.15里面能够看得见。
图2.15的显示出来的结果是。
咱们在算数学题的时候, 那个先后顺序的规则, 和我们平常学过的学校里教的数学里面, 用的运算符优先级是一样的。
先乘除后加减。
同级运算符要从左往右的方向开始依次计算下去, 这一点需要大家留意。
在调整计算的先后步骤的时候, 可以使用括号。
算术运算符的优先级是依次从高到低进行排列排序, 并且顺序如下所示。
在第一级这个级别上面打上了星号。
这个级别里所包含的那些东西呢, 是星号、反斜线、百分号、双斜杠这些符号。
第三级:+、-。
在中,*运算符还可以用于字符串中,计算结果就是字符串重复指定次数的结果。下面是使用*运算符的示例。
如图2.16所示, 这就是运行出来的结果。
图2.16 运行结果
学习笔记
我们在调用除法运算这个操作的时候, 需要使用的是那个符号为斜线(/)或者双斜线的符号(//), 同时如果我们要进行求余这个计算的话, 我们必须保证除数不可以是数字0, 否则计算机就会抛出异常错误, 大家可以看到图2.17里面展示出来的这种情况。
图2.17, 除数为0时出现的错误提示。
2.第6个部分, 是关于赋值运算符的。
微课视频
赋值这个动作, 主要是用来给变量什么的进行赋值的。用的时候, 可以直接把等于号右边的值, 赋值给左边的变量。或者呢, 先做一点运算, 然后再把结果赋值给左边的变量。在中间的部分, 常用的赋值运算符, 就像表2.5那样列出来的。
表2.5 展示的是那些在编程里面, 经常被拿出来进行赋值操作的运算符号。
学习笔记
在咱们现在的编程过程里面经常会出现一种让人搞不清楚的状况, 这个状况就是把“=”和“==”这两个东西给弄混了。
大家要注意, 这种问题可不止是某一家语言才有的毛病, 而是很多种编程语言(这里头可不光只包含那几种大家熟知的啊)全都使用了这么两个长得有点像的符号, 以至于每天都要有一大批程序员在这上面栽跟头, 把这两个运算符用错掉。
具体说来, 那个写着等号样子的“=”, 它是被拿来当作赋值运算符使用的, 而那两个连着等的“==”, , 才是被安排去充当比较运算符的角色用的。
关于赋值运算符具体怎么使用, 下面给大家举个例子来说明一下子。
运行出来的具体结果, 在图2.18里面可以看得见。
图2.18 运行结果