蓝桥杯真题位运算

位运算:对二进制进行操作的运算方式

        与运算:有0得0

        或运算:有1得1

        异或运算:相同为0、不同为1取反

        左移、右移

与运算&:有0则为0,全1为1

蓝桥杯真题位运算_第1张图片

或运算|:有1则为1,全0为0 

蓝桥杯真题位运算_第2张图片

 异或运算^:相同为0、不同为1

交换律: x^y=y ^x        结合律: x ^(y ^z)=(x ^y)^z        自反性: x^x=0

零元素: x^0=x        逆运算: x^y =z,则有z^y=x(两边同时异或y,抵消掉)

蓝桥杯真题位运算_第3张图片

取反~:1变成0、0变成1

左移<<:二进制表示向左移动指定位数 

每次左移一位,相当于乘上2

蓝桥杯真题位运算_第4张图片

 右移>>:二进制表示向右移动指定位数

每次右移一位,相当于除以2

蓝桥杯真题位运算_第5张图片

位运算技巧

判断是否为2的若干次方: 判断x&(x-1)是否等于0

因此2的若干次方二进制表示中只存在一个1,上述一定成立,并且上述成立时说明只有一个1

获取x的最低位的1: Lowbit(x)= x&(-x)

蓝桥杯真题位运算_第6张图片 

x=int(input())
ans = 0
for i in range ( 32):
    if(x >>i) & 1:
        ans+=1
print(ans)

 

你可能感兴趣的:(蓝桥杯,python)