1.使用位运算判断一个数是否是奇数
num=int(input('请输入一个数:'))
if num & 1 == 0:
print('%d不是奇数' % num)
else:
print('d%是奇数' % num)
2.表达式0x13&0x17的值是( 19)
0X13: 010011
0x17: 010111
0x13&0x17 == 010011 (正数)
num=0b010011
print(num) #19
3.若x=-20,y=3则x&y的结果是(0 )
-20:110100(原) 101011(反) 101100(补)
3: 000011
x&y: 000000->0
4.表达式 -97 | 120 的运算结果是( -1 )
-97:11100001(原) 10011110(反) 10011111(补)
120:01111000
-97|120=11111111 11111110(反) 10000001(原) -> -1 (负数)
5.在位运算中,操作数每右移一位,其结果相当于(B)
A.操作数乘以2 (左移1位) B.操作数除以2 (右移一位)
C.操作数除以4 D.操作数乘以4
6.设x 是一个整数(16位).若要通过x|y使x低度8位置1,高8位不变,则y的二进制数是( 11111111)
- 数字1 | 数字2: 只要有1结果就是1,两个都为0结果才是0
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
特点: 和1或,置1
通过x|y使x低度8位置1,高8位不变,那么y的二进制数是0000000011111111
7.总结常用的位运算使用技巧(自己查自己,觉得好用记得住的)
-
1.用&(按位与)判断一个数的奇偶性
num & 1 == 0 --> num是偶数
num & 1 == 1 --> num是奇数
&(按位与)特点: 一个位上的数如果和1与,可以保留这个位上的数; 和0与可以置0 - |(按位或)特点: 和1或,置1
-
3.数字1 << N:数字1左移N位, 数字1 * 2N
数字1 >> N: 数字1右移N位,数字1 // 2N
应用:快速乘2的次方/除2的次方
网友评论