按位操作

直接截图粘贴了,这些符号在python中都被称作位运算符,

位操作是程序设计中对位模式按位或二进制数的一元和二元操作。

计算机只认识0和1,也就是二进制,而人类很难理解,于是就有了位运算符称作0和1,如实现A+B不用加号运算,用的就是位运算符。

一个个讲解

& 按位与运算  

当两个开关都为真,及连接时才能亮灯,在python中,何时为false,何时为trun,一般为0,或为空时为false,如数字0,空集合,空列表,空字符串,空字典,空字符串,还有表示什么都不在的None。其他都为trun。

所以操作时0&0=0,表示连个开关都为关,灯也就不亮,0&1=1,表示一个开关断开,一个开关连接,灯还是不亮,1&1=1,连个开关都连接,那么灯也亮。100&100=100.不为0,表示都连接,灯亮,100都可以认为是表示真。100&0=0,一个不连接就不亮

但5&6=4,为什么呢?重新看一下名字,按位与运算符。a&b,计算机只认识二进制数0和1,&符号运算规则是都为1就记作1,否则记作0.

先将5和6变成二进制数,内置函数bin()将10进制转换为2进制。

bin(5)=   1   0   1

bin(6)=   1   1   0

5&6   =   1   0   0

再将2进制转换为10进制,内置函数int    int('100',2)=4

第二个运算符是  |   键盘不好找,shift加反斜杠

|   或运算,一真及真,

我画的好像是电阻,不是电池,无所谓了,如图所示,只要有一个开关连通就行。

按位或运算时只要不是a|b都不为0就行,也就是但a|b=0,那就是a=b=0.

然后就是今天的关键了,^,按位异或运算符,

按位运算是对二进制数的,那就是不是0就是1,对于^,当对应的二进制位相异时为1。

如bin(22)=1   0   1   1   0

    bin(7)=            1   1   1            

              = 1   0   0   0   1

对位相异为1,不对位直接落下,相同就为0

0^0=0

0^8=    0   0   0   0

            1   0   1   0 

            1   0   1   0

0^x  如果x不为零,那么0^x=x    如果x=0,0^0=0,0也是0本身

任何数和0做异或操作都为其本身

     x^x =  *  *  *  *

               *  *  *  *

                0 0 0 0           任何数与其本身做异或操作都等于0                               

理解这些剩下的就简单了

~按位取反运算符

如bin(9)=1001

~9就是对1001按位取反,0变1,1变0,那就是0110

int('0110',2)=6

<<左移运算符

>>右移运算符

箭头指向哪里就是什么移

4<<1   就是4的二进制数向左移动1位

bin(4)=       1   0   0

 4<<1=  1   0   0   0    =  8   左移用0填补末尾

8>>2  就是8的二进制数向右移动两位

bin(8) =    1   0   0   0

8>>2  =              1   0   =  2   左移多余部分舍去

你可能感兴趣的:(按位操作)