python 位操作 << 、 >> 输入一个整数,输出该数二进制表示中1的个数
-
对二进制的左移与右移,即对原数进行乘二除二操作,输出十进制
0b110 << 1 # 6 -- 12 print(bin(12)) # 'ob1100' 0b110 >> 1 # 6 -- 3 print(bin(3)) # 'ob11'
-
对十进制先转换为二进制进行左移与右移,即对原数进行乘二除二操作,右移,输出十进制
6 << 1 # 6 -- 12 6 >> 1 # 6 -- 3
-
& “与”门 十进制两数相同为 1, 二进制对应位相同为 对应位为 1
1 & 1 # 1 1 & 0 # 0 1 & 10 # 0 1 & 100 # 0 0b1 & 0b1 # 1 0b1 & 0b10 # 0 0b010 & 0b110 # 2 bin(0b010 & 0b110) # 2 '0b10'
-
应用:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
sum([(n >> bit & 1) for bit in range(0,32)])