位运算

1. 位运算符

操作符描述
~按位取反
&按位与
|按位或
^按位异或
<<左移
>>右移
## 按位取反,0 变为 1,1 变为 0
~ 1 = 0
~ 0 = 1

## 按位与,只有两个对应位都为 1 时才为 1
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

## 按位或,只要两个对应位中有一个 1 时就为 1
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

##按位异或,只有两个对应位不同时才为 1
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

## << | 左移,num << i 将num的二进制表示向左移动i位所得的值
00 00 10 11 -> 11
11 << 3
---
01 01 10 00 -> 88 

## >> | 右移,num >> i 将num的二进制表示向右移动i位所得的值
00 00 10 11 -> 11
11 >> 2
---
00 00 00 10 -> 2 

2. 实例

  1. 通过 <<,>>快速计算2的倍数问题
n << 1 -> 计算 n*2
n >> 1 -> 计算 n/2,负奇数的运算不可用
n << m -> 计算 n*(2^m),即乘以 2 的 m 次方
n >> m -> 计算 n/(2^m),即除以 2 的 m 次方
1 << n -> 2^n
  1. 通过 ^快速交换两个整数。

在这里插入图片描述

  1. 通过a & (-a)快速获取a的最后为 1位置的整数
## 例一
00 00 01 01 -> 5
&
11 11 10 11 -> -5
---
00 00 00 01 -> 1

## 例二
00 00 11 10 -> 14
&
11 11 00 10 -> -14
---
00 00 00 10 -> 2

3. 练习题

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。尝试使用位运算解决此题。
在这里插入图片描述

3. 问答

  1. 怎样对python中的代码进行注释?

    ##:单行注释;''' ''':多行注释

  2. python有哪些运算符,这些运算符的优先级是怎样的?

    算术运算符、比较运算符、逻辑运算符,位运算符,三元运算符和其他运算符

  3. python 中 is, is not 与 ==, != 的区别是什么?

    is, is not 对比的是两个变量的内存地址,==, != 对比的是两个变量的值

  4. python 中包含哪些数据类型?这些数据类型之间如何转换?

    整型,浮点型,布尔型;转换为整型 int(x, base=10),转换为字符串 str(object=''),转换为浮点型 float(x)

4. 总结

因为自己有一定的基础,此次参加组队任务的主要目标为查缺补漏,所以只记录之前还不懂或者不熟悉的知识点。之前对位运算一直都只知皮毛,不识全体,趁此机会,狠狠恶补了相关知识。

参考文献:变量、运算符与数据类型位运算.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值