1.使用位运算判断一个数是否是奇数
num1 = int(input('请输入一个数:'))
num2 = num1 & 1
if num2 == 1:
print(num1, '这个数为奇数。')
运行结果:
请输入一个数:123
123 这个数为奇数。
2.表达式0x13&0x17的值是( 19 )
解:
0x13 的二进制为:0001 0011 ;
0x17 的二进制为:0001 0111 ;
运算: 0001 0011
& 0001 0111
--> 0001 0011
0001 0011 转换为十进制为:19 ;所以 0x13 & 0x17 的答案为 19 。
3.若x=-20,y=3则x&y的结果是( 0 )
解:
x 的二进制为:110100;
y 的二进制为:000011;
运算 110100
& 000011
--> 000000
000000 转换为十进制为:0 ;所以 x & y 的答案为 0。
4.表达式 -97 | 120 的运算结果是( -1 )
解:
-97 的二进制为:1110 0001(原);1001 1110(反);1001 1101(补)
120 的二进制为:0111 1000
运算: 1001 1101
| 0111 1000
--> 1111 1101(补);1111 1110(反);1000 0001(原)
1000 0001 转换为十进制为:-1 ;所以 x & y 的答案为 -1 。
5.在位运算中,操作数每右移一位,其结果相当于( B )
A.操作数乘以2 B.操作数除以2
C.操作数除以4 D.操作数乘以4
6.设x 是一个整数(16位).若要通过x|y使x低度8位置1,高8位不变,则y的二进制数是( 0000 0000 1111 1111 )
解:要使 x 的高8位不变, y 的高8位就必须为 0000 0000 ;
要使 x 的低8位为1, y 的低8位就必须为 1111 1111 ;
所以, y 的二进制为:0000 0000 1111 1111
7.总结常用的位运算使用技巧(自己查自己,觉得好用记得住的)
&(按位与运算):
和 1 与,可以保留这个位上的数(用来判断奇偶性等);和 0 与,可以置零。
|(按位或运算):
和 1 或,可以置数为 1
~(按位取反运算):
取反可以用于加密。
取反两次等于它本身。
^(按位异或运算):
可以判断两个数是否相等,结果为 0 就相等,为其它数就不相等。
异或也可以用于加密。
例如:
3 ^ 2 = 1
1 ^ 2 = 3
2 就为秘钥。
>>(按位右移):
快速的进行除以 2 的 N 次方。
A / (2 ** B): 可用于计算文件大小,比如2048B 的文件 2048 >> 10 ->2M 2048 / (2 ** 10) = 2
<<(按位左移):
快速的进行乘以 2 的 N 次方。
网友评论