![]() |
3.6 位位移运算符 |
位位移运算符将整数值的二进制各个位向左或向右移动指定的位数。Python语言提供了两种位位移运算符,如表3-9所示。
表3-9
左移运算符(<<)可将操作数向左移动n位,左移后超出存储范围的位舍去,右边空出的位则补0。语法格式如下:
a<<n
例如,表达式“12<<2”,数值12的二进制值为00001100,向左移动2位后成为00110000,也就是十进制的48,如图3-11所示。
图3-11
右移运算符(>>)与左移运算符相反,可将操作数内容右移n位,右移后超出存储范围的位舍去。留意这时右边空出的位,如果这个数值是正数,就补0,负数则补1。语法格式如下:
a>>n
例如,表达式“12>>2”,数值12的二进制值为00001100,向右移动2位后成为00000011,也就是十进制的3,如图3-12所示。
图3-12
下面的范例程序将实现本节上述图解的运算过程,在程序中声明a=12,让a和38进行4种位逻辑运算并输出运算的结果,最后对a分别进行左移与右移两位的位位移运算并输出结果。
【范例程序:bit_shift.py】位运算符的综合运用
01 # -*- coding: utf-8 -*- 02 """ 03 位运算符的综合应用 04 """ 05 06 a=12 07 print("%d&38=%d" %(a,a&38)) #AND运算 08 print("%d|38=%d" %(a,a|38)) #OR运算 09 print("%d^38=%d" %(a,a^38)) #XOR运算 10 print("~%d=%d"%(a,~a)) #NOT运算 11 print("%d<<2=%d" %(a,a<<2)) #左移运算 12 print("%d>>2=%d" %(a,a>>2)) #右移运算
程序的执行结果如图3-13所示。
图3-13