概述
(1)按位与 &
- 相同位的数字只要
有0则位0
(2)按位或 |
- 相同位的数字只要
有1就为1
(3)按位异或
- 相同位的数字数值
不同则为1
,相同则为0
(4)按位异或应用场景
(1)判断两个字符串是否相同
- 第一步:循环两组字符串,利用
ord()
函数获取其每个字符对应编码值 - 第二步:利用
按位异或
相同位数的数字一样则为0的属性来进行对比 - 将比较的值交给一个变量result来保存,然后与0进行对比,如果等于0,继续比较下一位上的值,直到最后一位,如果所有比较结果都为0,则两组字符串相等,否则两组字符串不相等。
(2)示例演示
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))
ubantu@ubantu-virtual-machine:~$ python3 test.py
True
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))
ubantu@ubantu-virtual-machine:~$ python3 test.py
False
(5)左移 <<
- 将运算数的二进制整体左移
指定位数
,低位用0补齐,将一个数左移一位扩大2倍
,以此类推。
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倍
,以此类推。
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
最后
以上就是激情雪糕为你收集整理的位运算、左移、右移的全部内容,希望文章能够帮你解决位运算、左移、右移所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复