![Python算法设计与分析从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/845/44509845/b_44509845.jpg)
3.1 变量
在Python中,变量严格意义上应该称为“名字”,也可以理解为标签。例如:
python="学会Python还可以飞"
本行代码中的python就是一个变量。在大多数编程语言中,都把这一过程称为“把值存储在变量中”,即把字符串序列“学会Python还可以飞”存储在计算机内存的某个位置。你不需要准确地知道它们到底在哪里,只要告诉Python这个字符串序列的名字是python,就可以通过这个名字来引用这个字符串序列了。例如,引用python变量,将其打印输出,代码如下:
print(python)
3.1.1 变量的命名和赋值
在Python中,不需要先声明变量名及其类型,直接赋值,即可创建各种类型的变量。但是变量的命名并不是任意的,应遵循以下几条规则:
变量名必须是一个有效的标识符,如height、m_name、h1等。
变量名不能使用Python中的保留字。例如,不能是int、print等。
慎用小写字母l和大写字母O(以防和数字1和0混淆)。
应选择有意义的单词作为变量名,如number、weight等。
为变量赋值,可以通过赋值运算符号“=”来实现。语法格式为:
变量名 = value
例如,创建一个变量,为其赋值521,则创建的变量就是整型变量:
number = 521 #创建变量number并赋值521,该变量为数值型
如果为变量赋值一个字符串,则创建的变量就是字符串类型。例如:
martial = "乾坤大挪移" #字符串类型的变量
另外,Python是一种动态类型的语言,也就是说,变量的类型可以随时变化。例如,在IDLE中,创建变量martial,并赋值为字符串“乾坤大挪移”,然后输出该变量的类型,可以看到该变量为字符串类型,再将变量赋值为数值521,并输出该变量的类型,可以看到该变量为整型。执行过程如下:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P37_32726.jpg?sign=1738898199-zZB338oHxQ7srrbstZFwUcTEgs4k4Z16-0-c0912260b57ebf5a546eec02dd43719d)
说明
在Python语言中,使用内置函数type()可以返回变量类型。
在Python中,允许多个变量指向同一个值。例如,将两个变量都赋值为数字2048,再分别应用内置函数id()获取变量的内存地址,将得到相同的结果。执行过程如下:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P37_32727.jpg?sign=1738898199-cjpGcUbLptBOmstIxsEJxWsyToREHIxt-0-9f3f88537c562211a3767e5fccda3432)
说明
在Python语言中,使用内置函数id()可以返回变量所在的内存地址。
3.1.2 变量的基本类型
变量的数据类型分为很多种,下面主要介绍数值型、字符串型、布尔型3种基本数据类型。例如,年龄、身高等信息可以使用数值型变量存储;名字、性别等信息可以使用字符型变量存储;婚否等信息可以使用布尔型变量存储,如图3.1所示。
1.数值类型
数值类型主要包含整数、浮点数和复数。接下来一一介绍。
1)整数
整数用来表示整型数值,即没有小数部分的数值。Python中,整数包括正整数、负整数和0,其位数是任意的(当超过计算机自身的计算功能时,会自动转用高精度进行计算)。例如,1314、3456789532900653、−2020、0等都是整数。
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P37_3245.jpg?sign=1738898199-9zDhQR8VVQLPoADDTLC3qt5K6UiHJkbl-0-52043e8d39b47c9e9eca7258a42fd2c1)
图3.1 数据类型示例
2)浮点数
浮点数由整数部分和小数部分组成,主要用于处理包括小数的数,如1.414、0.5、−1.732、3.1415926535897932384626等。浮点数也可以使用科学计数法表示,如3.7e2、−3.14e5和6.16e−2等。
注意
在使用浮点数进行计算时,可能会出现小数位数不确定的情况。例如,计算0.1+0.1时,会得到0.2;而计算0.1+0.2时,将得到0.30000000000000004(而不是0.3)。执行过程如下:
>>> 0.1+0.1 0.2 >>> 0.1+0.2 0.30000000000000004
这种问题几乎存在于所有语言中,原因是计算机精度存在误差,因此忽略多余的小数位即可。
3)复数
Python中的复数与数学中的复数含义完全一致,表现形式略有不同。两者都由实部和虚部组成,但数学中使用i表示虚部,Python中用j或J表示虚部。当表示一个复数时,可以将其实部和虚部相加,例如,一个复数的实部为5.21,虚部为13.14j,则这个复数为5.21+13.14j。
2.字符串类型
字符串就是连续的字符序列,是计算机所能表示的一切字符的集合。在Python中,字符串属于不可变序列,通常使用单引号(' ')、双引号(" ")或三引号(''' '''和""" """)括起来。这几种引号形式在语义上没有差别,只是在形式上有些差别。其中,单引号和双引号中的字符序列必须在同一行上,而三引号内的字符序列可以分布在连续多行中。例如:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P38_32730.jpg?sign=1738898199-EfmsTdqm2FXCysPdjQCg2sIjwXJeu59k-0-4f8ee1d2e60bb654683439d4be717faa)
3.布尔类型
布尔类型主要用来表示真值或假值。在Python中,标识符True和False被解释为布尔值。另外,Python中的布尔值可以转换为数值,True表示1,False表示0。
说明
Python中,布尔类型的值可以进行数值运算,例如“False + 1”的结果为1。但是不建议对布尔类型的值进行数值运算。
在Python中,所有对象都可以进行真值测试。其中,只有下面列出的几种情况得到的值为假,其他对象在if或者while语句中都表现为真。
False或None。
数值中的零,包括0、0.0和虚数0。
空序列,包括空字符串、空元组、空列表、空字典。
自定义对象的实例,该对象的__bool__方法返回False或者__len__方法返回0。
3.1.3 变量的输入与输出
变量的输入与输出是计算机最基本的操作。基本的输入是指从键盘上输入数据的操作,用input()函数输入数据。基本的输出是指在屏幕上显示输出结果的操作,用print()函数输出。
1.用input()函数输入
使用内置函数input()可以接收用户的键盘输入。input()函数的基本语法格式如下:
variable = input("提示文字")
其中,variable为保存输入结果的变量,双引号内的文字用于提示要输入的内容。
例如,想要接收用户输入的内容,并保存到变量tip中,可以使用下面的代码:
tip =input("请输入文字:")
在Python中,无论输入的是数字还是字符都将被作为字符串读取。如果想要接收数值,需要把接收到的字符串进行类型转换。例如,想要接收整型的数字并保存到变量age中,可以使用下面的代码:
age =int(input("请输入数字:")) #接收输入整型的数字
说明
input()函数接收内容时,数值内容可直接输入,且接收到的内容也是数值类型;如果要输入字符串类型的内容,需要将对应的字符串使用引号括起来,否则会报错。
2.用print()函数输出
默认情况下,使用内置的print()函数可以将结果输出到IDLE或者标准控制台上。其基本语法格式如下:
print(输出内容)
其中,输出内容可以是数字和字符串(字符串需要使用引号括起来),此类内容将直接输出;也可以是包含运算符的表达式,此类内容将计算结果输出。例如:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P39_32731.jpg?sign=1738898199-232phvfsV5gTCrGsg8eh1aFISjZirkPr-0-6ac12ba6d5d62c4a2ea01c1640548dfe)
多学两招
默认情况下,一条print()语句输出后会自动换行。如果想要一次输出多个内容且不换行,需要将输出的内容用英文半角的逗号分隔。例如,下面的代码将在同一行中输出变量a和b的值:
print(a,b) #输出变量a和b,结果为10 6
【实例3.1】 输出你的年龄。(实例位置:资源包\Code\03\01)
用input()函数输入你的年龄,用print()函数输出数据。具体代码如下:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P40_32734.jpg?sign=1738898199-eqDPO079B18xudCDyQp6ILpfBRgodyo6-0-ad4affc2612a108dc7a85ece1dedd017)
运行结果如图3.2所示。
【实例3.2】 用print()函数输出字符画。(实例位置:资源包\Code\03\02)
用print()函数输出一把手枪的字符画,具体代码如下:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P40_32735.jpg?sign=1738898199-eWaSj8xFwHffekLaSg6uD76bVi7YuJeJ-0-e9e629a9e78b204a6954ee7261df7ce6)
说明
代码中的字符是使用搜狗输入法中的特殊符号编写的。
运行结果如图3.3所示。
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P40_3477.jpg?sign=1738898199-MGcPBIX8PpnpeBnk3UBTCGvBqvFxB8r0-0-b580deb60510376051cef4dd811ca6f3)
图3.2 数据输入和输出
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P40_3486.jpg?sign=1738898199-fHP5GWYMik1brTFLZJRoEISRGnj3Axpr-0-f0433d2df20e0987b828a7bd9cd04f0b)
图3.3 输出字符画
3.1.4 变量的计算
变量的计算离不开运算符和表达式。运算符是一些特殊的符号,可用于数学计算、比较大小和逻辑运算等。Python中的运算符主要包括算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符和位运算符。使用运算符将不同类型的数据按照一定规则连接起来的式子,称为表达式。例如,使用算术运算符连接起来的式子称为算术表达式,使用逻辑运算符连接起来的式子称为逻辑表达式。下面就来介绍Python中常用的5类运算符。
1.算术运算符
算术运算符主要用于处理四则运算,在数值的处理中应用得最多。常用的算术运算符如表3.1所示。
表3.1 常用的算术运算符
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-T41_32738.jpg?sign=1738898199-eH0j3wa827yYFwBcsJoimRYdr7gUiVq6-0-b5aa69aeb6ee736263d0dc128e29043d)
【实例3.3】 计算a,b的各种表达式。(实例位置:资源包\Code\03\03)
具体代码如下:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P41_32739.jpg?sign=1738898199-Ku2CBukmy6jxj3yNdJK0TKA3jmGMnj61-0-6e7110e419d54f9def3ce6ada6e00c83)
运行结果如图3.4所示。
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P41_3666.jpg?sign=1738898199-zLVY07xqdcDR7ReB4wYY3S3eTIf9WwxC-0-69cb277f17cb11cd86e9c8f77a6c9c69)
图3.4 算术表达式结果
多学两招
在Python中,“+”运算符还具有拼接功能,可以将两个字符串进行拼接,例如:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P42_32741.jpg?sign=1738898199-h93mRjyOkon0PbDS7OpiGCVfoAjIVTgO-0-afa75e45fe660b1ced801d5ffeed2225)
也可以将字符串与数值进行拼接,例如:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P42_32743.jpg?sign=1738898199-bgW9ugwJbm3LoQZoC1A7HNE49AcXQL63-0-b6edbf7a3cd5d0f5c7b54abe237d9b3f)
2.赋值运算符
赋值运算符主要用来为变量赋值。使用基本赋值运算符“=”,可将“=”右边的变量值赋给左边的变量。也可以先进行某些运算,然后再赋值给左边的变量,这样的赋值运算符称为复合赋值运算符。Python中常用的赋值运算符如表3.2所示。
表3.2 常用的赋值运算符
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-T42_32745.jpg?sign=1738898199-xyDPlVGGPkIWW1ceXyHLGRX6lhlHxans-0-d051398cfb80a47fc1d2934e03e3ddf3)
3.比较(关系)运算符
比较运算符又称为关系运算符,用于对变量或表达式的结果进行比较。如果比较结果为真,则返回True;如果为假,则返回False。比较运算符通常用在条件分支结构及循环结构中,作为判断的依据。
Python中的常用比较运算符如表3.3所示。
表3.3 常用的比较运算符
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-T42_32747.jpg?sign=1738898199-V5jSsUG00WFwdw7JES5PwnNRq5ipG8UR-0-89552770555ae464df05a7350cf7aef7)
注意
初学者很容易混淆赋值运算符“=”和比较运算符“==”。一定要多看几遍示例,彻底弄明白它们之间的区别。
多学两招
在Python中,当需要判断一个变量是否介于两个值之间时,可以采用“值1 <变量<值2”的形式,例如“0 <a<100”。
【实例3.4】 比较化学、物理、数学、生物的成绩。(实例位置:资源包\Code\03\04)
具体代码如下:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P43_32767.jpg?sign=1738898199-7QtUUgBV91VGF8rAaCHMbGREjH7khkWG-0-0e4425c3d98c2872ec1befbff6439fd4)
运行结果如图3.5所示。
4.逻辑运算符
逻辑运算符可对真和假两种布尔值进行运算,运算后的结果仍是一个布尔值。逻辑运算符主要包括and(逻辑与)、or(逻辑或)和not(逻辑非)。表3.4和表3.5列出了逻辑运算符的用法。
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P43_4003.jpg?sign=1738898199-TDSoUCSqXYiYNEZzFqFfleUkxXqoOkEw-0-7d778fe2b149be894d6379af6a1c9209)
图3.5 比较表达式结果
表3.4 逻辑运算符
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-T43_32766.jpg?sign=1738898199-gP7xsN45CzRNGbylfkLwHM8ECOZMdhSZ-0-e3a280abb22676ca3fc23558b439f90a)
使用逻辑运算符进行逻辑运算时,其运算结果如表3.5所示。
表3.5 逻辑运算的结果
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-T44_32768.jpg?sign=1738898199-TdGZkGhQxhk6LixgaAFYoq4AnAbfDLjL-0-e83a69b59bcf5259560d34d67381549b)
【实例3.5】 参加手机店的打折活动。(实例位置:资源包\Code\03\05)
某手机店在每周二上午10~11点和每周五下午14~15点,对华为系列手机进行折扣让利活动。想参加折扣活动的顾客就要在时间上满足:周二10:00 a.m.~11:00 a.m.或者周五2:00 p.m.~3:00 p.m.。
通过逻辑运算符模拟可否参加手机店的打折活动,具体代码如下:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P44_32769.jpg?sign=1738898199-oOx6sdMrqYbwa8mklt1XqM9Za5Ce4tL4-0-3c2784c7994bdc80e67252681e274dce)
代码解析:
(1)第2行代码:input()函数用于接收用户输入的字符序列。
(2)第3行代码:由于input()函数返回的结果为字符串类型,所以需要进行类型转换,将其转换为整型。
(3)第5~8行代码使用if…else条件判断语句,该语句主要用来判断程序是否满足某种条件。该语句将在第3.2节进行详细讲解,这里只需要了解即可。第5行代码中对条件进行判断时,使用了逻辑运算符and、or和比较运算符“==”“>=”“<=”。
按F5键运行实例,首先输入“星期五”,然后输入时间19,将显示如图3.6所示的结果;再次运行实例,输入“星期二”,时间为10,将显示如图3.7所示的结果。
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P44_4130.jpg?sign=1738898199-dTS2EWKDMp39o8wMjWotWgh9oK5SErY8-0-074fa5699d72957fce56c2914f5113d3)
图3.6 不符合条件的运行效果
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P44_4137.jpg?sign=1738898199-o6zVLyxQhd9DfrHvTmMXTQiDmmPOHnaz-0-36ca1b2702ea4e8d3464084beaf6980d)
图3.7 符合条件的运行效果
说明
本实例未对错误输入信息进行校验,所以为保证程序的正确性,请输入合法的星期和时间。有兴趣的读者可以自行添加校验功能。
5.位运算符
使用位运算符,可直接对数字在内存中的二进制位进行操作。首先要把执行运算的数据转换为二进制数,然后才能进行执行位运算。Python中的位运算符包括位与(&)、位或(|)、位异或(^)、取反(~)、左移位(<<)和右移位(>>)。
说明
整型数据在内存中以二进制的形式表示。例如,7的32位二进制数形式如下:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P45_32773.jpg?sign=1738898199-9PZuHG688kWi6TfS5FD5OssQ0uXh5kuu-0-2eb4ce6d646019b5a10fd83bc07e430c)
其中,左边最高位是符号位,0表示正数,1表示负数。负数通常采用补码形式表示。例如,−7的32位二进制数形式如下:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P45_32775.jpg?sign=1738898199-N0ETrwt4ag5jzK1AOqpUrslTW1A3um0k-0-5f79b1b04ec3b0a652e08c55d4c21783)
1)位与运算符
位与运算的运算符为“&”。运算法则如下:两个操作数据的二进制表示,只有对应数位都是1时,结果数位才是1,否则为0。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。例如,12&8的运算过程如图3.8所示。
2)位或运算符
位或运算的运算符为“|”。运算法则如下:两个操作数据的二进制表示,只有对应数位都是0,结果数位才是0,否则为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。例如,4|8的运算过程如图3.9所示。
3)位异或运算符
位异或运算的运算符是“^”。运算法则如下:当两个操作数的二进制表示相同(同时为0或同时为1)时,结果为0,否则为1。若两个操作数的精度不同,则结果数的精度与精度高的操作数相同。例如,31^22的运算过程如图3.10所示。
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P45_4166.jpg?sign=1738898199-o4sPl2HfaPyyQeOgWdaWEeZAUo5y5c75-0-37cf1e4345bb5cde0b4d5fa4e180adfa)
图3.8 12&8的运算过程
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P45_4167.jpg?sign=1738898199-XLONZDvvGd2KsPp0uhCdPEVK61zmn9S4-0-6c061069d484ec65b99d2fb4bc8e616e)
图3.9 4|8的运算过程
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P45_4168.jpg?sign=1738898199-ik5rbUxX3HVWgvNUKh6hvPTxxZOQgWns-0-f1d92b16ffe95dae990ceb5dc5ec01a7)
图3.10 31^22的运算过程
4)位取反运算符
位取反运算也称位非运算,运算符为“~”。位取反运算就是将操作数中对应的二进制数1修改为0,0修改为1。例如,~123的运算过程如图3.11所示。
【实例3.6】 输出位运算的结果。(实例位置:资源包\Code\03\06)
使用print()函数输出图3.8~图3.11的位运算结果,具体代码如下:
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P45_4187.jpg?sign=1738898199-tt8VSTZ9i9ipZfqhkDNcma21d8Moedpr-0-c5a9d875a499133309d5861ec7171962)
图3.11 ~123的运算过程
01 print("12&8 = "+str(12&8)) #位与运算 02 print("4|8 = "+str(4|8)) #位或运算 03 print("31^22 = "+str(31^22)) #位异或运算 04 print("~123 = "+str(~123)) #位取反运算
运算结果如图3.12所示。
5)左移位运算符
左移位运算符“<<”可将一个二进制数向左移动指定的位数,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充。左移位运算相当于乘以2的n次幂。
例如,int型数据48对应的二进制数为00110000,将其左移1位,根据左移位运算符的运算规则可以得出(00110000<<1)=01100000,转换为十进制数就是96(相当于48*2);将其左移2位,根据左移位运算符的运算规则可以得出(00110000<<2)=11000000,转换为十进制数就是192(相当于48*22)。其执行过程如图3.13所示。
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P46_4221.jpg?sign=1738898199-72vNA2i4igEI0JILbBZD6TWBI4oXhhzz-0-d910c5b78e44838ec267c9dd1630248c)
图3.12 运算结果
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P46_4228.jpg?sign=1738898199-NHZqAH9I8JF3wzy7Jr3iFAAte2WdjKJK-0-c566cee43497b849947fc2815c41be4c)
图3.13 左移位运算
具体代码如下:
01 #打印将十进制的48左移1位后,获取的十进制数字 02 print("十进制的48左移1位后,获取的十进制数字为:",48<<1) 03 #打印将十进制的48左移2位后,获取的十进制数字 04 print("十进制的48左移2位后,获取的十进制数字为:",48<<2)
运行结果如图3.14所示。
6)右移位运算符
右移位运算符“>>”用于将一个二进制操作数向右移动指定的位数,右边(低位端)溢出的位被丢弃。在填充左边(高位端)的空位时,如果最高位是0(正数),左侧空位填入0;如果最高位是1(负数),左侧空位填入1。右移位运算相当于除以2的n次幂。
48右移1位的运算过程如图3.15所示。−80右移2位的运算过程如图3.16所示。
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P46_4258.jpg?sign=1738898199-Uf1rvk75Ol0SclEzntm7envQgABKKpqz-0-ac278f16bccdd07ae9223bad7e01f867)
图3.14 左移位运算结果
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P46_4266.jpg?sign=1738898199-3wKyUhVooo90i6kCr4vYJm7HQRWmfj3a-0-e7c7f2716770a9ab3a29150d186db2e5)
图3.15 48右移一位的运算过程
具体代码如下:
01 #打印将十进制的48右移1位后,获取的十进制数字 02 print("十进制的48右移1位后,获取的十进制数字为:",48>>1) 03 #打印将十进制的-80右移2位后,获取的十进制数字 04 print("十进制的-80右移2位后,获取的十进制数字为:",-80>>2)
运行结果如图3.17所示。
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P47_4302.jpg?sign=1738898199-1zI6izB4DNz8WRnxBEE3e6DjzsDLz4bO-0-150ca09cbcc99d14c324eeab12e06862)
图3.16 −80右移两位的运算过程
![](https://epubservercos.yuewen.com/569667/23721647609535706/epubprivate/OEBPS/Images/Figure-P47_4303.jpg?sign=1738898199-2KCnuDHT68tdZR24MOZ7v8rZfE0rNgcN-0-0181a6aa174512832f207d1ecfa9269c)
图3.17 右移位运算结果
多学两招
由于移位运算的速度很快,在程序中遇到表达式乘以或除以2的n次幂的情况时,一般采用移位运算来代替。