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的操作,统计个数
推荐阅读
- 赢在人生六项精进二阶Day3复盘
- 继续努力,自主学习家庭Day135(20181015)
- 2019-01-17-晨读7期-直子Day25
- 2019-07-04优美学子杨慧(创业路上,我不是一个人在战斗)
- 21天|21天|M&M《见识》04
- 阿菘的ScalersTalk第五轮新概念朗读持续力训练Day15|阿菘的ScalersTalk第五轮新概念朗读持续力训练Day15 20191025
- 2018-07-27读书心得
- 桂妃研读社|桂妃研读社|D124|如何有效阅读一本书 Day1
- 2018-07-09|2018-07-09 Spring 的DBCP,c3p0
- 17|17 关山松 第二课作业#公众号项目# D20