python之位运算,and , or

来源:互联网 发布:网络渗透测试教程 编辑:程序博客网 时间:2024/05/01 19:05
 
python之位运算,and , or
转自:http://hi.baidu.com/liberalwu/blog/item/a648ffeded36c44479f05575.html
位运算符号有:&(按位与),|(按位或),^(按位异或),~(按位取反),>>(右移运算),<<(左移运算)
优先级从高到低依次为:~, & , ^, |

“清零取反要用与,某位置一可用或。若要取反和交换,轻轻松松用异或。”

&(按位与) :真&真=真,真&假=假,假&假=假,假&真=假
|(按位或) :真|真=真,真|假=真,假|真=真,假|假=假
^(按位异或) :真^假=真 ,假^真=真 ,假^假=假,真^真=假
~(按位取反) :

奇数偶数的判断
整数类型(int) a:
A&1 == 0  偶数
A&1 == 1  奇数

移位运算

功能    示例    位运算      
去掉最后一位      101101->10110    x >> 1       
在最后加一个0     101101->1011010    x < < 1      
在最后加一个1    101101->1011011    x < < 1+1      
把最后一位变成1    101100->101101    x | 1      
把最后一位变成0     101101->101100    x | 1-1       
最后一位取反     101101->101100    x ^ 1      
把右数第k位变成1    101001->101101,k=3    x | (1 < < (k-1))       
把右数第k位变成0    101101->101001,k=3    x & ~ (1 < < (k-1))       
右数第k位取反     101001->101101,k=3    x ^ (1 < < (k-1))       
取末三位     1101101->101    x & 7      
取末k位    1101101->1101,k=5    x & ((1 < < k)-1)       
取右数第k位    1101101->1,k=4    x >> (k-1) & 1       
把末k位变成1    101001->101111,k=4    x | (1 < < k-1)      
末k位取反    101001->100110,k=4    x ^ (1 < < k-1)       
把右边连续的1变成0    100101111->100100000    x & (x+1)       
把右起第一个0变成1     100101111->100111111    x | (x+1)       
把右边连续的0变成1    11011000->11011111    x | (x-1)       
取右边连续的1    100101111->1111    (x ^ (x+1)) >> 1      
去掉右起第一个1的左边    100101000->1000    x & (x ^ (x-1))      

看看python中位运算的使用
E:\Python26\python.exe 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)]
>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
>>> 'a' and 'b' and 'c'
'c'
>>>

1.使用 and 时,在布尔环境中从左到右演算表达式的值。0、''、[]、()、{}、None 在布尔环境中为假;其它任何东西都为真。
2.如果布尔环境中的某个值为假,则 and 返回第一个假值。在这个例子中,'' 是第一个假值。
3.所有值都为真,所以 and 返回最后一个真值,'c'。

>>> '' or 'a' or 'b'
'a'
>>> '' or [] or {}
{}
>>>

1.使用 or 时,在布尔环境中从左到右演算值,就像 and  一样。如果有一个值为真,or 立刻返回该值。本例中,'a'  是第一个真值。
2.or 演算 '' 的值为假,然后演算 'a' 的值为真,于是返回 'a' ,对'b'就不做判断了
3.如果所有的值都为假,or 返回最后一个假值。or  演算 '' 的值为假,然后演算 [] 的值为假,依次演算 {} 的值为假,最终返回 {}  。

交换两个变量值
Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 1
>>> b = 2
>>> a = a^b
>>> b = b^a
>>> a = a^b
>>> print a
2
>>> print b
1
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 起诉后对方没钱怎么办 法院起诉人不到怎么办 治安拘留跑了怎么办 看守所里生病了怎么办 二审上诉被驳回怎么办 醉酒驾车取保候审以后怎么办 小案子证据不足怎么办 撞车不严重逃逸怎么办 被执行人没有财产执行怎么办 挖到人头了怎么办 取保保证金不退怎么办 被诬陷经济诈骗怎么办 醉驾刑事拘留后怎么办 被别人举报赌博怎么办 涉黄刑事拘留怎么办取保候审 换了车牌保险怎么办 车辆转让后保险怎么办 立案后警察不管怎么办 打架后对方讹人怎么办 工商被恶意举报怎么办 店铺被工商举报怎么办 被买单侠恐吓怎么办? 团伙作案刑事拘留怎么办取保 欢乐麻将老输怎么办 回不了家怎么办身份证 没注意闯红灯了怎么办 摩托车被套牌了怎么办? 发现员工偷钱怎么办 盗窃刑事拘留7天怎么办 盗窃抓不到人怎么办 发现宿舍被盗后怎么办(  ) 发现宿舍被盗后怎么办() 回收到赃物电瓶怎么办 不知情买了赃物怎么办 盗窃单位要报警怎么办 上网吸烟被逮住怎么办 有人在微信骂我怎么办 网吧抽烟被拍照怎么办 诈骗被拘留该怎么办 行政拘留人跑了怎么办 车牌号被偷了怎么办