当前位置: 首页 > news >正文

了解异或的好处和用途

 1.什么是异或?

异或:对于二进制,相同为0 不同为11 ⊕ 1 = 00 ⊕ 0 = 01 ⊕ 0 = 10 ⊕ 1 = 1 

2.异或的好处? 

    异或的好处?1.快速比较两个值 2.xor a a例如 a = 3 011xor 0110003.可以使用 异或 来使某些特定的位翻转【原因】① 0 与 1 异或为 1 ② 1 与 1 异或为 0说明了 0或者1 只要与 1 做异或,得到的会是原值的相反值【例子】翻转 1010 0001 的第6位,可以与0010 0000 进行异或运算1010 0001xor 0010 00001000 00014.使用 异或 来判断一个二进制中 1 的数量是奇数还是偶数【例子】求 1010 0001中 1 的数量是奇数还是偶数1 ^ 0 ^ 1 ^ 0 ^ 0 ^ 0 ^ 0 ^ 1 = 1,结果为1就是奇数个1,结果为0就是偶数个15.校验和恢复6.交换两个值,在不使用其他空间的情况下a = a ^ b;b = a ^ b;a = a ^ b;7.二进制交换奇偶位① 取出所有的偶数位 ---- 与1010 1010 1010...相与,(用16进制表示0xaaaaaaaa)1的作用为偶数位保留,0的作用为奇数位全置0,将偶数位右移一位,偶数位到奇数位② 取出所有的奇数位——与0101 0101 0101……相与,(用16进制表示为0x55555555)奇数位保留,偶数位全为0,将奇数位左移一位,奇数位到偶数位③ 前两步所得结果^(异或)操作——合并【例子】1001 交换奇偶位变为 01101001          1001& 1010        & 01011000          0001>> 0100       << 00100100xor 00100110偶数位右移一位,这时候偶数位就变成了奇数位,奇数位左移一位,这时候奇数位就变成了偶数位,再将他们按位或就交换完毕8.只出现一次的数给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素【原因】因为一个数出现两次就会抵消为0

#include <iostream>
#include <vector>
using namespace std;// 1.快速比较两个值 
int test1(int a,int b) {if((a^b)== 0) return 1;else return 0;
}// 6.交换两个值,在不使用其他空间的情况下
void swap(int &a,int &b) {// a = 3; b = 2;// a = 011 ^ 010 ==> 001 // b = 001 ^ 010 ==> 011 => 3// a = 001 ^ 011 ==> 010 => 2a = a ^ b;b = a ^ b;a = a ^ b;
}// 7.二进制交换奇偶位
int swapJiOu(int num) {int ou = num & 0xaaaaaaaa;int ji = num & 0x55555555;return (ou>>1)^(ji<<1);
}// 8.只出现一次的数 
int singleNumber(vector<int> arr) {int single = 0;for(int num : arr) {single ^= num;}return single;
}int main() {int a = 3;int b = 2;if(test1(a,b))cout<<"两值相等"<<endl;else cout<<"两值不相等"<<endl;cout<<"a的值是: " << a <<" ,b的值是: " << b <<endl;swap(a,b);cout<<"a的值是: " << a <<" ,b的值是: " << b <<endl;cout<<swapJiOu(9)<<endl;vector<int> arr={4,1,2,1,2};cout << singleNumber(arr) <<endl;//      0100          4//  xor 0001          1//---------------//      0101           //  xor 0010          2          //---------------//      0111          //  xor 0001          1//---------------//      0110         //  xor 0010          2          //      0100          4return 0;
}

打印如下: 

heheda@heheda:~/Linux/内存对齐$ g++ xor.cpp -o app
heheda@heheda:~/Linux/内存对齐$ ./app
两值不相等
a的值是: 3 ,b的值是: 2
a的值是: 2 ,b的值是: 3
6
4

相关文章:

了解异或的好处和用途

1.什么是异或&#xff1f; 异或&#xff1a;对于二进制&#xff0c;相同为0 不同为11 ⊕ 1 00 ⊕ 0 01 ⊕ 0 10 ⊕ 1 1 2.异或的好处&#xff1f; 异或的好处&#xff1f;1.快速比较两个值 2.xor a a例如 a 3 011xor 0110003.可以使用 异或 来使某些特定的位翻转【原因…...

vue函数式组件

<template>改为<template functional> 即可然后模板里使用到父组件参数的话&#xff0c;需在变量前面加上 props&#xff0c;如 <div>{{count}}</div> 改为 <div>{{props.count}}</div>如果组件比较简单&#xff0c;只是展示数据的话&…...

Idea Live Template 功能总结

文章目录 Java自带的template属性模板psf——public static finalpsfi——public static final intpsfi——public static final StringSt——String 方法模板psvm——main方法sout——打印语句iter——for迭代循环fori——for循环 代码块模板if-e —— if elseelse-if 自定义自…...

场景入门12----构造脚本搭建栅栏和石头墙

打开任意一个蓝图都有构造脚本&#xff0c;就是当这个蓝图在诞生时就会运行的东西 新建一个蓝图&#xff0c;在构造函数里添加静态网格体&#xff0c;把蓝图拖出来就能显示 多个栅栏 创建多个栅栏。新建一个变量为栅栏数量&#xff0c;数组从0开始&#xff0c;所以countt要减一…...

零基础看懂免费开源的Stable Diffusion

文章目录 前言Diffusion模型推理过程训练过程 Stable Diffusion模型参考 前言 前面一篇文章主要讲了扩散模型的理论基础&#xff0c;还没看过上篇的小伙伴可以点击查看&#xff1a;DDPM理论基础。这篇我们主要讲一下一经推出&#xff0c;就火爆全网的Stable Diffusion模型。St…...

Zmq适配Win7 SP0 / Win XP/ Win 2k

1.目的 由于发布版本的libzmq使用了较多新的系统特性&#xff0c;导致在低版本windows平台上无法使用。 因此&#xff0c;需要对zmq源码进行修改以适配低版本的系统&#xff0c;如Win7 SP0&#xff0c;Win XP&#xff0c;Win2003等等。 2.Win7 SP0 #if defined ZMQ_HAVE_WIN…...

掌握Python的X篇_30_使用python解析网页HTML

本篇将会介绍beutifulsoup4模块&#xff0c;可以用于网络爬虫、解析HTML和XML&#xff0c;对于没有接触过前端&#xff0c;不了解HTML是如何工作的&#xff0c;需要先解释一下什么事HTML。 1. HTML 网页中的各种布局等的背后都是非常简单的纯文本格式&#xff0c;那种格式称为…...

广联达OA前台sql注入+后台文件上传漏洞复现分析

文章目录 前言资产特征前台sql注入后台文件上传解决办法 前言 最近看到广联达OA的前端sql注入和后端文件上传漏洞联动的poc 广联达科技股份有限公司以建设工程领域专业应用为核心基础支撑&#xff0c;提供一百余款基于“端云大数据”产品/服务&#xff0c;提供产业大数据、产业…...

No view found for id 0x7f0901c3 for fragment解决以及线上bug排查技巧

情景再现 开发这么久&#xff0c;不知道你们是否也经历过这样的情况&#xff0c;测试或者用户&#xff0c;反馈app闪退&#xff0c;结果你自己打开开发工具&#xff0c;去调试&#xff0c;一切正常&#xff0c;然后闪退还是存在&#xff0c;只是在开发环境中不能重现。这种情况…...

腾讯云CVM服务器竞价实例是什么?和按量计费有什么区别?

腾讯云服务器CVM计费模式分为包年包月、按量计费和竞价实例&#xff0c;什么是竞价实例&#xff1f;竞价实例和按量付费相类似&#xff0c;优势是价格更划算&#xff0c;缺点是云服务器实例有被自动释放风险&#xff0c;腾讯云服务器网来详细说下什么是竞价实例&#xff1f;以及…...

Kali Linux助您网络安全攻防实战

Kali Linux&#xff1a;黑客与防御者的神器 Kali Linux是一款专为网络安全测试和攻防实践而设计的操作系统。它汇集了大量的安全工具&#xff0c;可以用于渗透测试、漏洞扫描、密码破解等任务&#xff0c;不仅为黑客提供了强大的攻击能力&#xff0c;也为安全防御者提供了测试和…...

JavaEE初阶:多线程 - 编程

1.认识线程 我们在之前认识了什么是多进程&#xff0c;今天我们来了解线程。 一个线程就是一个 "执行流". 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 "同时" 执行 着多份代码. 引入进程这个概念&#xff0c;主要是为了解决并发编程这样的…...

一种多策略下RabbitMQ的延时队列实现

1.为什么会用到延时队列? 场景: 最近在开发一款系统中遇到这样一个场景,A系统开通套餐需要把套餐信息以邮件的形式发送给相关工作人员,经过人工审核通过后,在B系统里面开通,A系统会调B系统套餐列表接口查询套餐是否开通成功,开通成功则从A系统去完成订单,假如超过设定时间未开…...

解密 AI 客服;在不同硬件设备上运行大型语言模型的可能性

&#x1f989; AI新闻 &#x1f680; 微软必应首席执行官称必应聊天优于OpenAI的GPT-4&#xff0c;但成本更高 摘要&#xff1a;微软必应的首席执行官米哈伊尔・帕拉欣表示&#xff0c;必应聊天表现优于OpenAI的GPT-4&#xff0c;但使用了更高成本的检索增强推理技术。必应聊…...

问题:【IntelliJ IDEA】解决idea自动声明变量加finall修饰符问题

问题:【IntelliJ IDEA】解决idea自动声明变量加finall修饰符问题 场景复现 1 new String() 2 快捷方式生成变量 final修饰的 final String s new String();步骤一&#xff1a;确保settings配置信息 settings-----》Editor------》Code Style--------》java下的这两个选项不…...

SpringBoot基于Zookeeper实现分布式锁

文章目录 问题背景前言实现搭建Zookeeper容器引入依赖ZK客户端的配置类ZK客户端的工厂类注入bean构建测试类 问题背景 研究分布式锁&#xff0c;基于ZK实现&#xff0c;需要整合到SpringBoot使用 前言 参考自SpringBoot集成Curator实现Zookeeper基本操作&#xff0c;Zookeeper入…...

AT89C51单片机实现单片机串口互动(中断方式,单片机--单片机,应答)

说一下功能&#xff1a;客户机发送0x01到服务机 2服务单片机应答0xf2到客户机 3客户机接收到0xf2,发送信息153432这6个数字到服务机 4client发送完信息后发送0xaa结束通信 5server接收到0xaa后回复0xaa结束通信&#xff0c;从此老死不相往来 看代码&#xff1a; //发送端…...

九耶丨阁瑞钛伦特-请说说你在工作中的PRD文档是如何撰写的?

1、背景说明&#xff08;解释清楚为什么要做这样一件事&#xff0c;以及做这件事的价值&#xff0c;先把观点拉齐&#xff0c;才方便接下来的工作开展&#xff09; 简要介绍与项目相关的背景信息、项目要满足的用户需求、开展项目的主要原因、项目期望上线时间、项目涉及的具体…...

Android免打包多渠道统计如何实现

摘要&#xff1a; 实际上只要完成1-2步即可实现多渠道打包&#xff0c;这也意味着&#xff0c;只要每次更新App时给出一个原始包&#xff0c;运营人员就能在后台自己进行操作管理&#xff0c;简单快捷到全程无需开发人员参与。 我们都知道&#xff0c;Android 市场被分割成几十…...

Apipost CICD怎么配置?

配置CI/CD Apipost自动化测试新增CI/CD&#xff0c;配置运行环境、循环次数、间隔停顿后点击保存会生成命令&#xff0c;在安装Apipost的服务器中输入命令即可运行测试脚本。 自动化测试 创建自动化测试脚本在创建好的测试用例中选择「CICD」&#xff0c;点击新建&#xff0c…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

jdbc查询mysql数据库时,出现id顺序错误的情况

我在repository中的查询语句如下所示&#xff0c;即传入一个List<intager>的数据&#xff0c;返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致&#xff0c;会导致返回的id是从小到大排列的&#xff0c;但我不希望这样。 Query("SELECT NEW com…...

Python环境安装与虚拟环境配置详解

本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南&#xff0c;适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者&#xff0c;都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...

深入解析 ReentrantLock:原理、公平锁与非公平锁的较量

ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...