(1)按位与 &
- 相同位的数字只要
有0则位0
(2)按位或 |
- 相同位的数字只要
有1就为1
(3)按位异或
- 相同位的数字数值
不同则为1
,相同则为0
(4)按位异或应用场景
(1)判断两个字符串是否相同
- 第一步:循环两组字符串,利用
ord()
函数获取其每个字符对应编码值 - 第二步:利用
按位异或
相同位数的数字一样则为0的属性来进行对比 - 将比较的值交给一个变量result来保存,然后与0进行对比,如果等于0,继续比较下一位上的值,直到最后一位,如果所有比较结果都为0,则两组字符串相等,否则两组字符串不相等。
(2)示例演示
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13s1 = 'abcdsgrgtleth800992edf' s2 = 'abcdsgrgtleth800992edf' def compare(s1, s2): result = 0 for x, y in zip(s1, s2): result = ord(x) ^ ord(y) if result != 0: return result == 0 return result == 0 print(compare(s1, s2))
复制代码
1
2
3ubantu@ubantu-virtual-machine:~$ python3 test.py True
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13s1 = 'abcdsgrgtleth800992edf' s2 = 'abcdsgggtleth800992edf' def compare(s1, s2): result = 0 for x, y in zip(s1, s2): result = ord(x) ^ ord(y) if result != 0: return result == 0 return result == 0 print(compare(s1, s2))
复制代码
1
2
3ubantu@ubantu-virtual-machine:~$ python3 test.py False
(5)左移 <<
- 将运算数的二进制整体左移
指定位数
,低位用0补齐,将一个数左移一位扩大2倍
,以此类推。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
180 0 0 0 0 0 0 1 1 整体左移一位,低位补0 0 0 0 0 0 0 1 0 2 再次左移一位 0 0 0 0 0 1 0 0 4 验证: >>> 1 << 1 2 >>> 2 << 1 4
(6)右移 >>
- 将运算数的二进制整体右移
指定位数
,高位用0补齐,将一个数右移一位缩小2倍
,以此类推。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
180 0 0 0 0 1 0 0 4 整体右移一位,高位补0 0 0 0 0 0 0 1 0 2 再次右移一位 0 0 0 0 0 0 0 1 1 验证: >>> 4 >> 1 2 >>> 2 >> 1 1
最后
以上就是激情雪糕最近收集整理的关于位运算、左移、右移的全部内容,更多相关位运算、左移、右移内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复