1.使用位运算判断一个数是否是奇数
i = int(input())
if i & 1 == 1:
print('奇数', i)
else:
print('偶数:', i)
2.表达式0x13&0x17的值是(19)
0x13 转换为十进制: 1 * 16 ** 1 + 3 * 16 ** 0 = 19
转换为二进制: 10011
原码:0001 0011
反码:0001 0011
补码:0001 0011
0x17 转换为十进制 1 * 16 ** 1 + 7 * 16 ** 0 = 23
转换为二进制: 10111
原码:0001 0111
反码:0001 0111
补码:0001 0111
所以0001 0011 & 0001 0111 -> 0001 0011
这个的反码是:0110 1000,原码是:0001 0011,
转换为十进制是:1 * 2 ** 2 + 1 * 2 ** 2 + 1 * 2**0 = 19
3.若x=-20,y=3则x&y的结果是(0)
x = -20 ,转换为二进制:1001 0100
原码:1001 0100
反码:1110 1011
补码:1111 0100
y = 3 ,转换为二进制:0000 0011
原码:0000 0011
反码:0000 0011
补码:0000 0011
所以1111 0100 & 0000 0011 -> 0000 0000
因此这个的原码是0000 0000,转换为十进制为 0
4.表达式 -97 | 120 的运算结果是()
-97,转换为二进制:1110 0001
原码:1110 0001
反码:1001 1110
补码:1001 1111
120,转换为二进制:0111 1000
原码:0111 1000
反码:0111 1000
补码:0111 1000
所以1001 1111 | 0111 1000 -> 1111 1111
因此这个的原码是1000 0001,转换为十进制为-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的二进制位: xxxx xxxx xxxx xxxx
由题知x | y的值为:xxxx xxxx 1111 1111
因此y的低八位为1111 1111,
因‘|’的特点有1为1,双0为0,可知高八位:0000 0000
综上:y的二进制数为 0000 0000 1111 1111
7.总结常用的位运算使用技巧(自己查自己,觉得好用记得住的)
网友评论