Python语言中的按位运算
来源:互联网 发布:手机淘宝怎么快速秒杀 编辑:程序博客网 时间:2024/06/03 05:52
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
转载请注明出处和作者.
位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算).
简单来说,按位运算就把数字转换为机器语言——二进制的数字来运算的一种运算形式。在计算机系统中,数值一律用补码来表示(存储)。
Python中的按位运算符有:左移运算符(<<),右移运算符(>>),按位与(&),按位或(|),按位翻转(~)。这些运算符中只有按位翻转运算符是单目运算符,其他的都是双目运算符。
按位与 &
举例:
3&5
解法:3的二进制补码是 11, 5的是101, 3&5也就是011&101,先看百位(其实不是百位,这样做只是便于理解) 一个0一个1,根据(1&1=1,1&0=0,0&0=0,0&1=0)可知百位应该是1,同样十位上的数字1&0=0,个位上的数字1&1=1,因此最后的结果是1.(这之后本来应该还有一步,因为我们现在得到的数值只是所求答案的补码,但是因为正数的补码即是它本身,所以就省略了。不过,下面的例子就不能省略最后这一步了).
-1&-2
-2&6
解法:-2的补码是11111110, 6的补码是110, 11111110&110,也就是11111110&00000110(这样写的目的是让初学者能够更好理解按位运算),按照上面的方法得到的结果是:110,转化位十进制就是6.
小技巧:利用按位与可以将任意二进制数的最后一位变为0,即就是X&0.
按位并 |
举例:
4|7
解法:按位并的计算规律和按位与的很相似,只不过换了逻辑运算符,并的规律是: 1|1=1 ,1 |0=1, 0|0=0. 4|7转换位二进制就是:100|111=111. 二进制111即为十进制的7.
小技巧:利用按位并可以将任意二进制数的最后一位变为1,即就是X|1.
按位异或 ^
方法: 对位相加,特别要注意的是不进位.
举例:
2^5
1^1
解法:1+1=0.(本来二进制1+1=10,但不能进位,所以结果是0)
解法: -3的补码是11111101,4的补码是100 (也即00000100),11111101^00000100=11111101,补码 11111101转为原码是1000111,即十进制的-7.
解法:3的二进制是11, -(11+1)=-100B=-4D. (注:B和D分别表示二进制和十进制).
~-2
左移运算符 <<
方法: X<<N 将一个数字X所对应的二进制数向左移动N位.
举例:
右移动运算符 >>
方法: X>>N 将一个数字X所对应的二进制数向右移动N位.
举例:
今天学习了一会Python中的按位与运算,觉得教程里面说的不够详细,有不懂的地方。而后在网上找了几篇文章,但都是鱼龙混杂啊,有的一看就知道不是自己写的,好几个实例都是错误的。。自学的艰难啊。。不过最后终于搞明白了,就分享一下自己的笔记。因为现在越来越多的人在网上学习东西,自己从中受益,学到了很多东西,就也想做点贡献作为回报.水平有限,欢迎斧正.
- Python语言中的按位运算
- C语言中的按位运算
- Python中的按位运算符
- C语言中的位运算
- C语言中的位运算
- C语言中的位运算
- C语言中的位运算
- C语言中的位运算
- C语言中的位运算
- C语言中的位运算
- C语言中的位运算
- C语言中的位运算
- C语言中的位运算
- C语言中的位运算
- C语言中的位运算
- C 语言中的 位运算
- C语言中的位运算
- C语言中的位运算& ^ |
- 配置Vim编辑器设置Tab键的格数(长度)
- Android应用程序入门 推箱子游戏开发(一) surfaceView 实现动画效果
- 一笺梦
- bbs
- php 获取随机数
- Python语言中的按位运算
- JAVA [ HTTP ]
- hdu 3887 Counting Offspring
- 指针例子
- 网络编程初步认识(一)
- iphone开发-SQLite数据库使用
- C++中的static关键字
- java验证身份证
- JAVA [ 多线程 ]