目录
变量、运算符与数据类型
6、位运算
1. 怎样对python中的代码进行注释?
#单行注释
""" """ 多行注释
2. python有哪些运算符,这些运算符的优先级是怎样的?
-
算术运算符(+-*/ // % **)
-
比较运算符
-
位运算符
-
逻辑运算符
-
三元运算符
-
其他运算符
- 优先级:一元优于二元,先算术运算符,后移位,最后位运算,然后再结合逻辑运算
3. python 中 `is`, `is not` 与 `==`, `!=` 的区别是什么?
-
如果比较的变量是地址地址不可变得,则二者等价
-
如果比较的变量是地址可变得,如dict list,则二者不相同;
-
is is not 比较的是变量的地址
-
== != 比较的是变量的值
4. python 中包含哪些数据类型?这些数据类型之间如何转换?
- 整型 浮点 布尔
- int()
- str()
- bool()
6、原码、反码、补码:
二进制有三种不同的表现形式:原码、反码、补码;计算机内部使用补码来表示;
原码:二进制表示(有一位符号位)
反码:正数的反码是原码,负数的反码是符号位不变,其余位取反;
补码:正数的补码是原码,负数的原码是反码+1;
符号位:最高位位符号位,0表示正数,1表示负数。在位运算中符号位也参与运算。
按位非~:把补码的0和1全部取反,把有符号正数的符号位在~运算中同样会取反。
按位与操作&:只有两个对应位都为1才为1;
按位或操作:只要两个对应位中有1个1就是1;
按位异或:只有两个对应位不同时位1;
按位异或:满足交换律和结合律;按位异或运算是指两个相应的二进制相同时结果为0,否则为1。
按位左移:num<<i 将num的二进制表示左移动i位所得的值;
按位右移:num>>i 将num的二进制表示右移动i位所得的值;
利用位运算实现快速计算;
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
通过^ 快速交换两个整数;
a^b^b=a
b^a^b=a
(1)一个变量按位异或自己的结果为0,即:a ^ a = 0;
(2)一个变量按位异或0的结果为自己,即:a ^ 0 = a;
练习题:
leetcode 习题 136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
尝试使用位运算解决此题。
题目说明:
"""
Input file
example1: [2,2,1]
example2: [4,1,2,1,2]
Output file
result1: 1
result2: 4
"""
for i in a:
s=s^i
print(s)