Day_07-作业

2019-01-02  本文已影响0人  两只小猪呼噜噜_1539

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

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的操作,统计个数

上一篇 下一篇

猜你喜欢

热点阅读