Python3位运算符

前言

本文介绍的是位运算符,位运算可以理解成对二进制数字上的每一个位进行操作的运算,位运算分为 布尔位运算符 和 移位位运算符。

文章目录

  • 前言
  • 一、位运算概览
    • 1、布尔位运算符
      • 1)按位与运算符 ( & )
      • 2)按位或运算符 ( | )
      • 3)按位异或运算符( ^ )
      • 4)按位取反运算符( ~ )
    • 2、移位运算符
      • 1)左移动运算符( << )
      • 2)右移动运算符( >> )

在这里插入图片描述

一、位运算概览

1、布尔位运算符

1)按位与运算符 ( & )

定义描述:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。
两个数 按位与 操作如下:

a = 60           # 60 = 0011 1100 
b = 13           # 13 = 0000 1101 
c = 0c = a & b        # 12 = 0000 1100 
print ("1 - c 的值为:", c)

输出结果如下:

1 - c 的值为: 12

2)按位或运算符 ( | )

定义描述:只要对应的二个二进位有一个为1时,结果位就为1。
两个数 按位或 操作如下:

a = 60          # 60 = 0011 1100
b = 13          # 13 = 0000 1101
c = 0c = a | b       # 61 = 0011 1101 
print ("2 - c 的值为:", c)

输出结果如下:

2 - c 的值为: 61

3)按位异或运算符( ^ )

定义描述:当两对应的二进位相异时,结果为1。
两个数 按位异或 操作如下:

a = 60     # 60 = 0011 1100
b = 13     # 13 = 0000 1101
c = 0c = a ^ b      # 49 = 0011 0001 
print ("3 - c 的值为:", c)

输出结果如下:

3 - c 的值为: 49

4)按位取反运算符( ~ )

定义描述:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
两个数 按位取反 操作如下:

a = 60     # 60 = 0011 1100
c = 0c = ~a       # -61 = 1100 0011 
print ("4 - c 的值为:", c)

输出结果如下:

4 - c 的值为: -61

注意:这里 ~a 代表是对二进制数 00111100 取反,直观感受应该是 11000011 ,即 -67。但实际输出的却是 -61, 这是为什么呢?是因为计算机中,二进制编码是采用补码的形式表示的,补码定义如下:
正数的补码是它本身,符号位为 0;负数的补码为正数数值二进制位取反后加一,符号位为一;
我们对 a求反的过程如下:(这里的过程可能有误,有问题欢迎讨论

  0011 1100     # a的初始值
---------------0011 1100     # a初始值的补码,正数的补码是它本身
---------------
~  1100 0011     # 对a的每一位取反
---------------1011 1100     # a取反后的数值的补码表示 11 1100  = 60, 符号位为1,即 -60。
---------------1011 1101     # 负数的补码为正数数值二进制位取反后加一,所以11 1101= 61,符号位为1,即 -61。

所以我们的-61就是这么来的。

2、移位运算符

1)左移动运算符( << )

    定义描述:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。

一个数 左移动运算 操作如下:

a = 60       # 60 = 0011 1100
c = 0c = a << 2     # 240 = 1111 0000 print ("5 - c 的值为:", c)

输出结果如下:

5 - c 的值为: 240

2)右移动运算符( >> )

定义描述:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数。低位丢弃,高位补0。
一个数 右移动运算 操作如下:

a = 60       # 60 = 0011 1100
c = 0c = a >> 2     # 15 = 0000 1111 print ("6 - c 的值为:", c)

输出结果如下:

6 - c 的值为: 15

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

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

相关文章

一款C#开源、简单、免费的屏幕录制和GIF动画制作神器

前言 今天要给大家推荐一款由C#语言开发且开源的操作简单、免费的屏幕录制和GIF动画制作神器&#xff1a;ScreenToGif 。 工具介绍 ScreenToGif 是一款免费的开源屏幕录制和GIF 制作工具。它可以帮助用户捕捉计算机屏幕上的实时动画&#xff0c;并将其保存为高质量的 GIF 图像…

开发者工具-sources(源代码选项)

一、概要说明 源代码面板从视觉效果上分为三个区域&#xff1a;菜单区、内容区、监听区。 菜单区里面有5个子分类&#xff1a; 网页(Page)&#xff1a;指页面源&#xff0c;包含了该页面中所有的文件&#xff0c;即使多个域名下的文件也都会展示出来&#xff0c;包括iframe…

手机耳机哪个品牌音质好

在寻找音质出色的手机耳机时&#xff0c;品牌选择显得尤为重要。市场上众多知名品牌提供了各式各样的耳机产品&#xff0c;它们在音质、降噪功能、设计等方面各有千秋。以下是一些在音质上表现优异的手机耳机品牌的分析&#xff1a; 索尼&#xff1a;索尼的耳机以其卓越的降噪技…

开利网络参加广州数据交易所学习活动

开利网络做为南沙广州数据交易所的会员参加了由“广东三会”组织的“数据资产”相关学习活动。&#xff08;下图为开利董事长付立军先生在签到&#xff09; 学习内容提现了数字时代企业数字化转型的核之心“发掘数据价值&#xff0c;驱动高速发展”&#xff0c;交易中心组织大家…

5G NR TAE TEST

环境配置&#xff1a; 测试TAE时&#xff0c;需要比对不同的Antenna Port之间的差异来测试 配置DL 2 layer MU的case layer1&#xff1a;通过设置weight&#xff0c;只有一个物理天线上有weight&#xff0c;其他天线上的weight为0&#xff0c;该天线的DMRS DMRS Port设置为1…

学习Java的日子 Day51 数据库,DDL

Day51 MySQL 1.数据库 数据库&#xff08;database&#xff09;就是一个存储数据的仓库。为了方便数据的存储和管理&#xff0c;它将数据按照特定的规律存储在磁盘上。通过数据库管理系统&#xff0c;可以有效地组织和管理存储在数据库中的数据 MySQL就是数据库管理系统&#…

PLC无线通讯模块

在工业自动化日益深入的今天&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;作为工业控制的核心大脑&#xff0c;其功能的扩展和智能化水平直接影响着整个生产线的效率和安全性。而PLC无线通讯模块&#xff0c;作为连接PLC与外界信息世界的桥梁&#xff0c;其重要性不…

Centos给普通用户添加sudo命令权限

打开sudoers文件 sudo visudo 修改sudoers文件 找到root ALL(ALL) ALL这一行&#xff0c;即如下图标出红线的一行 在此行下新增如下内容: lbs为用给予sudo执行权限的用户名 # 执行sudo命令&#xff0c;需要输入命令 lbs ALL(ALL) ALL 或 # 执行sudo命令&#xff0c;…

HQChart使用教程100-uniapp如何在vue3运行微信小程序

HQChart使用教程100-uniapp如何在vue3运行微信小程序 症状原因分析解决思路解决步骤1. 修改vender.js2. 修改HQChartControl.js 完整实例HQChart代码地址 症状 HQChart插件在uniappvue3的项目编译成小程序以后&#xff0c; 运行会报错&#xff0c;见下图。 原因分析 查了下…

【Mac】 Infuse for Mac(多媒体播放器) v7.7.6软件介绍和安装

软件介绍 Infuse Pro是一款非常强大的视频播放器&#xff0c;它被誉为 Apple TV上最强的播放器。它支持广泛的视频格式和解码器&#xff0c;包括DTS、DTS-HD、AC3、E-AC3等高清视频的音频播放任务。此外&#xff0c;Infuse Pro还支持所有常见的高清格式。 Infuse Pro的特点之…

软件行业人均工资多少?20万已完胜大多数

本篇文章继续讨论中国软件行业的人效比。&#xff08;金融科技公司的人效比链接在这里。&#xff09; 这次选择了7家公司&#xff1a;软通动力、用友网络、中科软、东软集团、航天信息、东华软件、中国软件&#xff0c;均是中国软件行业排名比较靠前、业务相对纯粹的软件公司。…

如何仿一个抖音极速版领现金的进度条动画?

效果演示 不仅仅是实现效果&#xff0c;要封装&#xff0c;就封装好 看完了演示的效果&#xff0c;你是否在思考&#xff0c;代码应该怎么实现&#xff1f;先不着急写代码&#xff0c;先想想哪些地方是要可以动态配置的。首先第一个&#xff0c;进度条的形状是不是要可以换&am…

力扣257. 二叉树的所有路径

思路&#xff1a;题目需要记录从根节点开始走的路径&#xff0c;无疑选用前序遍历&#xff0c;用一个数组paths 记录走过的节点信息&#xff0c;遇到叶子节点就用另一个list记录下路径&#xff0c;回溯时删掉paths尾节点即可 class Solution {public List<String> binar…

JeecgBoot-Vue3:基于Vue3的低代码开发平台的新篇章

摘要 随着前端技术的不断发展&#xff0c;Vue3.0、TypeScript、Vite以及Ant Design Vue等新技术方案的涌现&#xff0c;为低代码开发平台带来了全新的可能性。JeecgBoot-Vue3作为JeecgBoot低代码平台的全新UI版本&#xff0c;采用Vue3技术栈&#xff0c;结合上述先进技术&#…

VBA代码解决方案第十四讲 如何利用VBA检查单元格中是否含有公式

《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程&#xff0c;目前已经是第三版修订了。这套教程定位于入门后的提高&#xff0c;在学习这套教程过程中&#xff0c;侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码…

解决bind error: Address already in use

是端口复用问题 产生原因 程序突然退出系统但是没有释放端口 问题解决 首先通过 //显示进程信息 ps -la //杀死相关进程 kill -9 xxxx然后添加socket设置 int on1; if(setsockopt(lfd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on))<0){perror("setsockopt")…

Qt QScript 之 C++/JavaScript相互调用

文章目录 Qt Script什么是ECMAScriptQt 中JavaScriptclass 详解Basic UsageQObject对脚本引擎可用使用信号槽connect 三种模式访问属性, 子对象使c++对象可用于用Qt Script编写的脚本C++ 类成员函数可用于脚本C++ 类属性可用于脚本对脚本中的c++对象信号的反应函数对象和本机函…

CRMEB多店版v3.0前端技术革新与实践

摘要 随着移动互联网技术的飞速发展&#xff0c;用户对移动应用的体验要求日益提高。CRMEB多店版v3.0作为一款针对多门店管理的电商系统&#xff0c;在前端技术层面进行了全面的革新与优化。本文将从移动端UI设计、页面功能更新、DIY设计功能升级、移动端平台与门店管理、营销…

Kubernetes 系统监控Metrics Server、HorizontalPodAutoscaler、Prometheus

Metrics Server Linux 系统命令 top 能够实时显示当前系统的 CPU 和内存利用率&#xff0c;它是性能分析和调优的基本工具。 Kubernetes 也提供了类似的命令&#xff0c;就是 kubectl top&#xff0c;不过默认情况下这个命令不会生效&#xff0c;必须要安装一个插件 Metrics …

halcon程序如何导出C#文件

1.打开halcon文件&#xff1b; 2.写好需要生成C#文件的算子或函数&#xff1b; 3.找到档案-输出&#xff0c;如下图&#xff1b; 4.点击输出&#xff0c;弹出如下窗口 &#xff08;1&#xff09;可以修改导出文件的存储路径 &#xff08;2&#xff09;选择C#-HALCON/.NET &…