2019-01-02 day7 作业

1.使用位运算判断一个数是否是奇数

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

请输入一个数:12
12是偶数

2.表达式0x13&0x17的值是(19)

0x13 -->00010011
0x17 -->00010111
00010011 & 00010111 = 00010011
 00010011 -->  19

3.若x=-20,y=3则x&y的结果是(0 )

-20 --> 10010100(原码)--> 11101011(反码)--> 11101100(补码)
3 --> 00000011(补码)
11101100 & 00000011 = 00000000 --> 0

4.表达式 -97 | 120 的运算结果是(-1)

-97 --> 11100001(原码) --> 10011111(补码)
120 --> 01111000
10011111 | 01111000 = 11111111(补码)-->10000001(原码)= -1

5.在位运算中,操作数每右移一位,其结果相当于(B)

A.操作数乘以2     B.操作数除以2 
C.操作数除以4     D.操作数乘以4

6.设x 是一个整数(16位).若要通过x|y使x低度8位置1,高8位不变,则y的二进制数是(0B11111111 )

7.总结常用的位运算使用技巧(自己查自己,觉得好用记得住的)

1、交换两个数(不借助第三变量)

这种方法可以实现的基础是一个数m与另一个数n异或,再与n异或,得到的结果是m.

不适用临时变量,交换两个数
a = a ^ b
b = b ^ a
a = a ^ b

2.求两个数的平均值

print((m + n) >> 1)

你可能感兴趣的:(2019-01-02 day7 作业)