Python异或运算符示例

news2025/7/18 0:58:43

目录

异或

异或的性质

示例1:值交换

示例2:找出现一次的元素

示例2代码: 


 

异或

英文为exclusive OR,缩写成xor,符号是^

aba^b
0假0假0假
0假1真1真
1真0假1真
1真1真0假

异或的性质

1、a ^ a=0 任何数字和自己异或结果是0
2、a ^ 0=a 任何数字和0异或还是他自己
3、a ^ b = b ^ a 异或运算具有交换律
4、a ^ (b ^ c) = (a ^ c) ^ b 异或运算具有结合律

我们依赖这四条性质就能做很多操作,例如下面的两个示例:

示例1:值交换

x=5 y=7将两个变量的值通过异或运算符进行交换

x = 5
y = 7
# x = 101(二进制) ^ 111(二进制) = 010(二进制) 异或代表相同取反,不同取正 1:1-0:1-1:1 = 010 二进制的010等于10进制的2
x = x ^ y
# y = 010(二进制) ^ 111(二进制) = 101(二进制) 也就是:0:1-1:1-0:1 = 101 二进制101等于10进制的5
y = x ^ y
# x = 010(二进制) ^ 101(二进制) = 111(二进制) 也就是:0:1-1:0-0:1 = 111 二进制的111等于10进制的7
x = x ^ y
# 最终输出x = 111(二进制) = 7(十进制)
print(x)
# y = 101(二进制) = 5(十进制)
print(y)

代码演示:

x = 5
y = 7
# x = 101(二进制) ^ 111(二进制) = 010(二进制) 异或代表相同取反,不同取正 1:1-0:1-1:1 = 010 二进制的010等于10进制的2
x = x ^ y
# y = 010(二进制) ^ 111(二进制) = 101(二进制) 也就是:0:1-1:1-0:1 = 101 二进制101等于10进制的5
y = x ^ y
# x = 010(二进制) ^ 101(二进制) = 111(二进制) 也就是:0:1-1:0-0:1 = 111 二进制的111等于10进制的7
x = x ^ y
# 最终输出x = 111(二进制) = 7(十进制)
print(x)
# y = 101(二进制) = 5(十进制)
print(y)

输出结果:

示例2:找出现一次的元素

给定一个非空整数数组,除了某个元素只出现一次以外,其每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?

输入示例1:

[2,2,1]

输出示例1:

1

输入示例2:

[4,1,2,1,2]

输出示例2:

4

理解分析:

我们在异或运算的过程中根据异或门的逻辑来看,因为数都是成对的,那么成对的数在异或过程中都会被消耗掉,只有单独存在的一个数不会被配对消耗掉,故而可以留存到最后。

注:

这里主要用到的是异或的n ^ n = 0的性质,来逐一消耗成对的数。

示例2代码: 

arr = [4, 1, 2, 1, 2]
index = 0
for i in arr:
    index ^= i
print(index)

结果: 

自定义测试:

arr = [4, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 2, 3, 4, 666, 1, 2, 3, 2]
index = 0
for i in arr:
    index ^= i
print(index)

结果正确: 

 

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

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

相关文章

Java项目:JSP蛋糕甜品店管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台,分为管理员与普通用户两种角色,管理员登录后台,普通用户登录前台; 管理员角色…

Zookeeper

文章目录Zk介绍特点数据结构应用场景Zk安装、集群下载、启动配置参数解读Zookeeper 集群操作选举机制(面试重点)客户端命令行操作客户端界面节点类型(持久 / 短暂 / 有序号 / 无序号)监听器1)节点的值变化监听2&#x…

【通信】基于matlab模拟室内VLC模型(含BER和SNR)附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

短视频平台如何保证内容安全问题?

本文首发于:行者AI谛听 近些年,短视频的安全意识越来越强,随着各大平台的用户暴增,平台的一些审核及运营都有着巨大的挑战。那么对于平台来说,如何保证内容安全呢? 很多短视频平台的内容有着爆炸式的增长&a…

Vue3动态路由(Vite+Vue3+TS+Mock)

一、动态路由简介 Vue通过路由进行页面管理,不同的路由绑定到不同的页面。一般来说,前端直接写好的路由为静态路由,在不修改代码的情况下,路由表是不会改变的。对于不需要动态改变路由表的网站,静态路由就已经足够了&…

关于数据治理工具的选型,你了解多少?

数据治理的本质是盘点数据资产、治理数据质量,实施数据全生命周期的管理,这里面包括了建组织、立制度或者使用一款数据治理的软件帮助企业开展数据治理的相关工作等等。根据不同的数据治理项目特点,会用到不同的技术或工具。拥有一套趁手好用…

功率放大器的三种类型是什么意思

很多人都知道功率放大器,但是却不知道同样都是功率放大器,但是名字相同,作用却是完全不同的,总是会有工程师发出这样的疑问“功率放大器的三种类型是什么以及功率放大器怎么选择型号”等等,今天就请安泰电子来为我们解…

SpringBoot整合Alibaba-Dubbo和Apache-Dubbo

文章目录1 Alibaba整合Dubbo1.1 服务提供者1.1.1 服务提供者接口1.1.2 服务提供者实现类1.1.2.1 项目结构图1.1.2.2 pom.xml1.1.2.3 服务实现类1.1.2.4 配置文件1.1.2.5 启动类1.2 服务消费者1.2.1 项目结构图示1.2.2 请求入口1.2.3 配置文件1.2.4 启动类2 Apache整合Dubbo2.1 …

Pytorch学习笔记(四)官方60min入门教程之图像分类器

你已经了解了如何定义神经网络,计算损失值和网络里权重的更新。 现在你也许会想应该怎么处理数据? 通常来说,当你处理图像,文本,语音或者视频数据时,你可以使用标准 python 包将数据加载成 numpy 数组格式…

Web3中文|10月份超48%的以太坊NFT交易额是假的

来源 | cryptoslate 编译 | BoweniNFTnews.com 10月份全球NFT销售额超过8.5亿美元,总交易量约为300万笔。 NFT月销售额 数据来源:Footprint Analytics 在市场状况不佳的情况下,仍有大量唯一买家与卖家。10月份有超过100 万的唯一买家和卖家…

第九章 哈希表 AcWing 1532. 找硬币

第九章 哈希表 AcWing 1532. 找硬币 原题链接 AcWing 1532. 找硬币 算法标签 哈希表 双指针 思路 使用哈希表集合 用一个哈希表存储硬币。 对于每一枚硬币 x,判断在集合中是否存在 y,使得 x y m。 如果存在,则是一组解,判…

Linux Command htpasswd 创建密码文件

文章目录Linux Command htpasswd 创建密码文件1. 简介2. 安装3. 语法4. 选项5. 示例6. 其他Linux Command htpasswd 创建密码文件 1. 简介 htpasswd是Apache的Web服务器内置的工具,用于创建和更新储存用户名和用户基本认证的密码文件。 2. 安装 centos 7、 redhat&#xff…

MCE | 靶向 cGAS-STING 通路或可治疗渐冻症

自从 12 年前被发现以来,STING 途径就吸引了众多TOP生物学家的关注,去年 3 月,陈志坚教授带领的研究团队和其合作者在 Nature 上同日发表三篇论文,让 cGAS-STING 通路大火了一把,并被认为是未来十年内肿瘤免疫靶点的“…

指静脉当前遇到的问题

一、《基于改进残差网络的指静脉识别算法》_易芮 2020.5.20 ①采集到的指静脉图像质量不高"边缘曝光"及手指的自由度导致图像存在的偏移问题 (传统的指静脉识别技术是基于图像的纹理、特征点等细节进行特征提取,若图像质量较差的话&#xff…

thymeleaf抽取公共页面

thymeleaf抽取公共页面Thymeleaf中th:include、th:replace、th:insert、th:fragment用法及区别th:include、th:replace、th:insert区别在开发Web网站的时候,HTML页面有很多是相同的,如果每一个页面都写一遍,不仅非常麻烦,而且非常…

基于粒子群算法的城轨列车牵引多目标能耗优化问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

python基础之元组

文章目录一、元组注意:二、创建元组怎么验证这个变量真的是一个元组类型:三、使用迭代遍历元组四、应用场景五、格式化字符串后面的()本质上就是元组六、元组和列表之间的转换一、元组 元组(Tuple)与列表类…

Python(PyQt5)制作帮助文档查看器(可显示后缀名为md的文件)同时显示文本和图片

先看完整效果图: 帮助文档查看器是很多程序中必备要素,而利用Qt中的QTreeView组件可以很方便的查看文件,而QTextBrowser可以直接显示格式化的MarkDown文本。因此可以利用这两个组件制作一个帮助文件查看器。 未优化 效果图: 问题优化: 你会发现QT treeView列宽设置不成功问题…

Mybatis-Plus 06 条件构造器和常用接口

一、wapper介绍 Wrapper : 条件构造抽象类,最顶端父类 AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件 ​ QueryWrapper : 查询条件封装 ​ UpdateWrapper : Update 条件封装 AbstractL…

PG::Inclusiveness

nmap -Pn -p- -T4 --min-rate1000 192.168.134.14 nmap -Pn -p 21,22,80 -sCV 192.168.134.14 80端口是默认页面,先查看21端口FTP服务的匿名登录,并未发现可利用信息。 继续查看80端口,在robots.txt中得到提示。 https://www.howtogeek.co…