我是靠谱客的博主 激情雪糕,最近开发中收集的这篇文章主要介绍位运算、左移、右移,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

(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

最后

以上就是激情雪糕为你收集整理的位运算、左移、右移的全部内容,希望文章能够帮你解决位运算、左移、右移所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部