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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。