day08. 02 Python中的位运算符案例与解析

  • 理解并掌握Python中的位运算符:异或(^)、与(&)、或(|)、反(~)、右移(>>)、无符号右移(>>>,注意Python中无原生的>>>运算符,但可通过其他方式模拟)。
  • 能够通过实际案例演示位运算符的应用。
课程内容
一、引言

位运算符是对整数的二进制位进行操作的一种运算符。在Python中,这些运算符对于处理底层数据、优化算法等方面非常有用。

二、位运算符介绍
  1. 异或运算符(^)
    • 定义:对两个数的二进制位进行异或操作,相同为0,不同为1。
    • 案例:交换两个数的值(不使用临时变量)
       

      python复制代码

      a = 5 # 二进制 101
      b = 3 # 二进制 011
      a = a ^ b # a = 101 ^ 011 = 110 (6)
      b = a ^ b # b = 110 ^ 011 = 101 (5),此时a的值已经变成了b的原始值
      a = a ^ b # a = 101 ^ 110 = 011 (3),现在a和b的值已经交换
      print(f"a={a}, b={b}") # 输出 a=3, b=5
  2. 与运算符(&)
    • 定义:对两个数的二进制位进行与操作,相同为1,不同为0。
    • 案例:检查一个数是否为偶数
       

      python复制代码

      num = 10 # 二进制 1010
      if num & 1 == 0: # 检查最低位是否为0(偶数)
      print("偶数")
      else:
      print("奇数")
  3. 或运算符(|)
    • 定义:对两个数的二进制位进行或操作,相同或不同为1,全为0为0。
    • 案例:设置特定二进制位
       

      python复制代码

      num = 5 # 二进制 101
      num |= 4 # num = num | 4, 4的二进制是100,所以结果为101 | 100 = 101 (5,但实际上是设置了第3位)
      print(num) # 输出 5,但注意这里并没有改变值,只是演示了操作
  4. 反运算符(~)
    • 定义:对数的二进制位进行取反操作,0变1,1变0。注意Python中的结果是按补码形式返回的。
    • 案例:计算一个数的补码
       

      python复制代码

      num = 6 # 二进制 0110
      num_ = ~num # 实际上是计算了补码,结果为-7
      print(num_) # 输出 -7
  5. 右移运算符(>>)
    • 定义:将数的二进制位向右移动指定的位数,左侧用符号位填充(对于带符号整数)。
    • 案例:快速除以2的幂
       

      python复制代码

      num = 8 # 二进制 1000
      result = num >> 2 # 右移2位,相当于除以2的2次方
      print(result) # 输出 2
  6. 无符号右移运算符(>>>)
    • 注意:Python没有原生的无符号右移运算符(>>>)。但可以通过其他方式模拟,比如先将数转换为正数(如果它是负数),执行右移后,再根据情况调整结果。
    • 模拟案例:模拟无符号右移
       

      python复制代码

      def unsigned_right_shift(num, bits):
      # 转为正数处理
      mask = (1 << bits) - 1
      return (num & mask) >> bits
      num = -8 # 二进制 1111 1000 (假设是8位,实际Python中int是动态长度的)
      result = unsigned_right_shift(num, 3) # 尝试模拟无符号右移3位
      print(result) # 输出结果将依赖于num的二进制表示和bits的值
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值