Python系列(17)—— 位运算符

Python中的位运算符(Bitwise Operator)

一、引言

位运算符是直接对整数的二进制位进行操作的运算符。在Python中,位运算符可以对整数进行位级别的运算,如按位与(AND)、按位或(OR)、按位异或(XOR)、按位取反(NOT)等。这些运算符在底层系统编程、算法优化、网络通信等领域有广泛的应用。

二、位运算符介绍

  1. 按位与(&):对应位都为1时,结果位才为1,否则为0。
  2. 按位或(|):对应位只要有1,结果位就为1,否则为0。
  3. 按位异或(^):对应位不同时为1,相同时为0。
  4. 按位取反(~):对整数的二进制位取反,即0变为1,1变为0。
  5. 左移(<<):将数字的二进制表示向左移动指定的位数,右边用0填充。
  6. 右移(>>):将数字的二进制表示向右移动指定的位数,左边根据符号位填充(正数填充0,负数填充1)。

三、代码实例

下面通过几个示例来展示Python中位运算符的使用。

  1. 按位与(&)
a = 60  # 二进制表示:0011 1100
b = 13  # 二进制表示:0000 1101# 使用按位与运算
result = a & b
print(result)  # 输出:12,二进制表示:0000 1100
  1. 按位或(|)
a = 60  # 二进制表示:0011 1100
b = 13  # 二进制表示:0000 1101# 使用按位或运算
result = a | b
print(result)  # 输出:61,二进制表示:0011 1101
  1. 按位异或(^)
a = 60  # 二进制表示:0011 1100
b = 13  # 二进制表示:0000 1101# 使用按位异或运算
result = a ^ b
print(result)  # 输出:49,二进制表示:0011 0001
  1. 按位取反(~)
a = 60  # 二进制表示:0011 1100# 使用按位取反运算
result = ~a
print(result)  # 输出:-61,二进制表示:1100 0011(补码表示)
  1. 左移(<<)
a = 6  # 二进制表示:0000 0110# 使用左移运算,将a的二进制表示向左移动2位
result = a << 2
print(result)  # 输出:24,二进制表示:0001 1000
  1. 右移(>>)
a = 10  # 二进制表示:0000 1010# 使用右移运算,将a的二进制表示向右移动1位
result = a >> 1
print(result)  # 输出:5,二进制表示:0000 0101

四、总结

位运算符在Python编程中不常用,但在某些特定场景下(如底层系统编程、算法优化等)非常有用。通过掌握位运算符,可以更深入地理解计算机底层的数据表示和操作方式,提高编程能力和算法效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql Day06

sql优化 插入数据 大批量插入数据 主键顺序插入性能高于乱序插入 load data local infile /root/load_user_100w_sort.sql into table tb_user fields terminated by , lines terminated by \n ; 主键优化 这个黄色的都是一个一个Page 主键乱序插入之后会变成1-3-2&#x…

qt - 19种精美软件样式

qt - 19种精美软件样式 一、效果演示二、核心程序三、下载链接 一、效果演示 二、核心程序 #include "mainwindow.h"#include <QtAdvancedStylesheet.h> #include <QmlStyleUrlInterceptor.h>#include "ui_mainwindow.h" #include <QDir&g…

从零开始学习Netty - 学习笔记 - NIO基础 - ByteBuffer: 简介和基本操作

NIO基础 1.三大组件 1.1. Channel & Buffer Channel 在Java NIO&#xff08;New I/O&#xff09;中&#xff0c;“Channel”&#xff08;通道&#xff09;是一个重要的概念&#xff0c;用于在非阻塞I/O操作中进行数据的传输。Java NIO提供了一种更为灵活和高效的I/O处理方…

基于微信小程序的日语学习的系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

中台的介绍及讲解

什么是中台 公司在新的一年规划中提出了新的发展战略&#xff0c;我们老板听说最近中台的概念很火&#xff0c;让我们调研公司实习中台战略的可行性&#xff0c;于是乎最近一段时间被老板折腾得够呛。刚开始并不理解什么是中台… 因此&#xff0c;写篇博客先简单介绍下什么是中…

mp3播放器

无界面播放器 一、首先需要一个存放音乐文件的路径 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> #include <glob.h> #include <signal.h>int menu(void); void fu…

24-k8s的附件组件-Metrics-server组件与hpa资源pod水平伸缩

一、概述 Metrics-Server组件目的&#xff1a;获取集群中pod、节点等负载信息&#xff1b; hpa资源目的&#xff1a;通过metrics-server获取的pod负载信息&#xff0c;自动伸缩创建pod&#xff1b; 参考链接&#xff1a; 资源指标管道 | Kubernetes https://github.com/kuberne…

Syntax error in cmake code when parsing string

CMake Error at D:\androidProjects\Android-mxxxx\app\src\main\jni\CMakeLists.txt:51 (add_library): Syntax error in cmake code when parsing string blog.csdnimg.cn/direct/794c8ba78dc747e99d200ca4b93e3450.png 解决办法&#xff0c;把路径的双斜杠改成单斜杠即可 D…

mysql中文首字母排序查询

MySQL中的排序涉及到字符集和排序规则。默认情况下&#xff0c;MySQL按照ASCII码对字符进行排序&#xff0c;数字>字母>中文。但是&#xff0c;特殊字符&#xff08;非字母、数字、中文&#xff09;的排序需要一些额外处理。 试过SUBSTRING、LEFT等&#xff0c;都不能完美…

静态时序分析:SDC约束命令set_input_delay详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 本章将讨论使用set_input_delay命令对输入端口的约束。首先需要说明的是&#xff0c;在进行静态时序分析时&#xff0c;任何一条时序路径都需要有约束&#xff0…

如何使用安卓平板远程Ubuntu服务器通过VS Code远程开发

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;…

【.NET Core】常见C#代码约定

【.NET Core】常见C#代码约定 文章目录 【.NET Core】常见C#代码约定一、概述二、代码预定的目标三、代码约束工具和分析器四、C#语言准则五、字符串约定5.1 使用字符串内插来连接短字符串5.2 插入大文本时&#xff0c;使用System.Text.StringBuilder对象 六、数组约定七、委托…

php数组运算符 比较 isset、is_null、empty的用法和区别

php数组运算符 1. 数组运算符2. 判断两个数组是否相等3. isset、is_null、empty的用法和区别 1. 数组运算符 注意&#xff1a;只会保留第一个数组中的键值对&#xff0c;而忽略后面数组中相同键名的元素&#xff0c;如果想要合并两个数组并覆盖相同键名的元素&#xff0c;可以…

C/C++区别、优劣详解!!!!!

文章目录 C/C区别、优劣详解1. C和C的基本区别1.1 语法特性1.2 编程范式 2. C和C的共同之处2.1 编译方式2.2 使用库 3. C和C的优劣势分析3.1 C语言的优劣3.1.1 优势3.1.2 劣势 3.2 C语言的优劣3.2.1 优势3.2.2 劣势 4. 总结 C/C区别、优劣详解 C和C是两种流行的编程语言&#…

C与C++的性能差距来源于哪里?

C与C的性能差距来源于哪里&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xf…

[NOIP2012 提高组] 借教室

题意&#xff1a;给定序列&#xff0c;支持区间减少操作&#xff0c;当序列中有负数时停止&#xff0c;输出次数。 #include<bits/stdc.h> using namespace std; int t[4000010]; int N,n,m; void build(int n) {for(N1;N<n1;N<<1);memset(t,0,sizeof(int)*(NN…

算法训练营day31,贪心算法5

package main import ( "fmt" "sort" ) //435. 无重叠区间 func eraseOverlapIntervals(intervals [][]int) int { if len(intervals) 0 { return 0 } count : 0 //移除数量 //按第一位从小到大排序 sort.Slice(intervals, func(i, j int) bool { retu…

龟兔赛跑算法

一、题目 给定一个长度为 n1 的数组nums&#xff0c;数组中所有的数均在 1∼n1 的范围内&#xff0c;其中 n≥1。 请找出数组中任意一个重复的数。 样例 给定 nums [2, 3, 5, 4, 3, 2, 6, 7]。返回 2 或 3。 二、解析 解决这个问题的一种有效方法是使用快慢指针&#xf…

SpringBoot图书管理系统

介绍 图书管理系统助力于图书馆中图书的管理&#xff0c;功能包含图书管理、借阅、归还&#xff0c;三块业务的解决方案&#xff0c;可对图书进行查询、查询图书剩余数量及借阅记录和状态、监控数量不足的图书。 使用技术 SpringBootMyBatisThymeleafMySQL 项目结构 业务流…

五种多目标优化算法(MOAHA、MOGWO、NSWOA、MOPSO、NSGA2)性能对比,包含6种评价指标,9个测试函数(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOAHA 1.2MOGWO 1.3NSWOA 1.4MOPSO 1.5NSGA2 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数&#xff08;zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3&#xff09;&#xff…