avatar

RWO.cc

读一次写一次

  • 首页
  • 搭建手册
  • 笔记
  • 短视频
  • 关于
  • 🌈200粉丝🌈
Home 位运算符
文章

位运算符

Posted 2024-08-21 Updated 2024-08- 21
By RWO.
7~9 min read

位运算符是在二进制层面进行操作的运算符,能够直接对整数的二进制表示进行处理。Python 中的位运算符包括以下几种,每一种都可以帮助我们在特定的场景下更高效地处理数据。

1. 按位与(&)

按位与运算符 & 对两个整数的二进制位进行比较,只有对应的两个二进制位都是 1 时,结果位才为 1,否则为 0。

例子:

a = 60    # 60 = 0011 1100
b = 13    # 13 = 0000 1101
c = a & b # 12 = 0000 1100
print(c)  # 输出 12

解释:

  • 0011 1100 (60)
  • 0000 1101 (13)
  • 0000 1100 (12)

2. 按位或(|)

按位或运算符 | 对两个整数的二进制位进行比较,只要对应的两个二进制位有一个是 1,结果位就为 1。

例子:

a = 60    # 60 = 0011 1100
b = 13    # 13 = 0000 1101
c = a | b # 61 = 0011 1101
print(c)  # 输出 61

解释:

  • 0011 1100 (60)
  • 0000 1101 (13)
  • 0011 1101 (61)

3. 按位异或(^)

按位异或运算符 ^ 对两个整数的二进制位进行比较,当对应的两个二进制位不同时,结果位为 1,相同时为 0。

例子:

a = 60    # 60 = 0011 1100
b = 13    # 13 = 0000 1101
c = a ^ b # 49 = 0011 0001
print(c)  # 输出 49

解释:

  • 0011 1100 (60)
  • 0000 1101 (13)
  • 0011 0001 (49)

4. 按位取反(~)

按位取反运算符 ~ 对一个数的二进制表示逐位取反,即将所有 0 变为 1,将所有 1 变为 0。这个运算对正数和负数的影响不同。

对于正数:

取反后结果为负数,并且是该数加1取反后的补码。

a = 60    # 60 = 0011 1100
c = ~a    # -61 = 1100 0011
print(c)  # 输出 -61

解释:

  • 0011 1100 取反变成 1100 0011,这个是 -61 的补码表示。

对于负数:

取反后结果为正数,并且是该数的绝对值减1。

例子:

a = -60   
c = ~a    
print(c)  # 输出 59

解释:

  • -60 的补码是 1100 0100,取反得到 0011 1011,即 59。

5. 左移(<<)

左移运算符 << 将数字的二进制位向左移动指定的位数,右侧用 0 补齐。相当于乘以 2 的若干次方。

例子:

a = 60     # 60 = 0011 1100
c = a << 2 # 240 = 1111 0000
print(c)   # 输出 240

解释:

  • 0011 1100 左移两位变成 1111 0000。

6. 右移(>>)

右移运算符 >> 将数字的二进制位向右移动指定的位数,左侧用 0 或 1 补齐,具体看该数的符号。

例子:

a = 60     # 60 = 0011 1100
c = a >> 2 # 15 = 0000 1111
print(c)   # 输出 15

解释:

  • 0011 1100 右移两位变成 0000 1111。

总结

位运算符可以在底层直接操作整数的二进制表示,适合处理需要高效计算或低级别操作的任务。按位取反运算符 ~ 特别需要注意,它对正数和负数的处理是基于计算机的二进制补码表示的。理解和正确使用这些运算符,可以在优化和处理复杂的位级操作时提供巨大的帮助。

短视频
每日一点 短视频 Python
License:  CC BY 4.0
Share

Further Reading

Nov 3, 2024

什么是 python 的闭包

在 Python 中,闭包(Closure)是一种函数对象,它不仅包含了函数的代码,还包含了函数创建时的环境变量。这意味着闭包可以“记住”其外部作用域中的变量,即使在外部作用域已经结束后,闭包仍然可以访问这些变量。 函数可以访问他被创建时所处的上下文环境,这被称为闭包。 闭包的基本特征 嵌套函数:闭

Nov 2, 2024

使用argparse模块解析命令行参数

在 Python 中,argparse 模块用于解析命令行参数,使得脚本可以更灵活地接受用户输入。以下是如何使用 argparse 模块解析命令行参数的详细介绍和示例。 基本用法 示例:简单的命令行参数解析 首先,创建一个简单的脚本来解析命令行参数。我们将创建一个脚本,该脚本接受两个整数并打印它们的

Nov 1, 2024

Python中的二维码生成与解析(花里胡哨)

如何使用 qrcode 库生成各种有趣的二维码,包括彩色二维码、带 Logo 的二维码和动态 GIF 二维码。下面,我们将逐步介绍这些功能。 Qrcode 库简介 qrcode 库是一个强大的 Python 工具,用于生成二维码。除了基本的二维码,它还支持自定义功能,如颜色变化、样式设计和动画效果。

OLDER

与(and) 或(or) 非(not)

NEWER

什么是鸭子类型?

Recently Updated

  • 什么是 python 的闭包
  • 使用argparse模块解析命令行参数
  • Python中的二维码生成与解析(花里胡哨)
  • Python中的二维码生成与解析(基础使用)
  • 使用platform模块获取系统信息

Trending Tags

学习 Git 工具 SQL docker-compose 每日一点 快捷键 Flink fastapi Windows

Contents

©2025 RWO.cc. Some rights reserved.

Using the Halo theme Chirpy