我是靠谱客的博主 激情雪糕,这篇文章主要介绍位运算、左移、右移,现在分享给大家,希望可以做个参考。

(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
13
s1 = '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
3
ubantu@ubantu-virtual-machine:~$ python3 test.py True
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
s1 = '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
3
ubantu@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
18
0 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
18
0 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

最后

以上就是激情雪糕最近收集整理的关于位运算、左移、右移的全部内容,更多相关位运算、左移、右移内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部