Day_07-作业

1.使用位运算判断一个数是否是奇数
注:奇数的二进制的最后一位是1,偶数是0

num = int(input('请输入一个数字:')) if num & 1 == 1: print('%d是一个奇数' % num) else: print('%d不是一个奇数' % num)

2.表达式0x13&0x17的值是( 19)
0x13 == 00010011(原==补)# 为正 0x19 == 01101000(原==补)# 为正

3.若x=-20,y=3则x&y的结果是(0 )
-20 == 10010100(原)--> 11101011(反) --> 11101100(补)# 为负 3 == 00000011(原==补)# 为正

4.表达式 -97 | 120 的运算结果是(-1)
-97 == 11100001(原)--> 10011110(反) -->10011111(补)# 为负 120 == 01111000(原 == 补)# 为正

5.在位运算中,操作数每右移一位,其结果相当于( B)
A.操作数乘以2 B.操作数除以2
【Day_07-作业】C.操作数除以4 D.操作数乘以4
6.设x 是一个整数(16位).若要通过x|y使x低度8位置1,高8位不变,则y的二进制数是( 255)
|运算特点:每位上有1就是1,没1就是0

7.常用的位运算使用技巧
1.X & (X - 1) 用于消去X最后的1
# 示例 x = 1100 x - 1 = 1011 x & (x - 1) = 1000

应用:1.检测整数 N 是否是 2 的幂次
# N如果是2的幂次,则N满足两个条件。# 1.N >0# 2.N的二进制表示中只有一个1# 因为N的二进制表示中只有一个1,所以使用N & (N - 1)将N唯一的一个1消去,应该返回0。 n = int(input('请输入一个数字:')) if n > 0 and n & (n-1) == 0: print('%d是2的幂次' % n) else: print('%d不是2的幂次' % n)

2.统计一个整数n的二进制数中出现过多少个1
思路:重复n & n-1的操作,统计个数

    推荐阅读