首页 > 编程语言 >C++__位运算符:异或运算符 ^

C++__位运算符:异或运算符 ^

时间:2024-08-03 22:53:27浏览次数:15  
标签:__ cout int 交换 运算符 二进制 异或

目的:

         了解异或运算符的定义、性质及用法。

定义:

       二元运算符,符号为^,与位与、位或不同的是,它在二进制中为相同为0,不同为1。而且

它还满足这几种运算规则:

        1、任何数^0都等于它本身;

        2、两个相同的数异或结果为0;

        3、异或满足交换和结合律。

总的说异或运算符就是不带进位的二进制加法。

	int a = 0b1010;//10
	int b = 0b0110;//6
	//		0b1100;//12
	cout << (a ^ b) << endl;

应用:

1、标记位取反

        将二进制数中某位0变为1。

        方法:用该数异或(^)上所求位为1其它位为0的二进制数。

int c = 0b10010011;//将倒数第四位取反
//		0b00001000
//      0b10011011
cout << (c ^ 0b1000) << endl;

2、变量交换

        异或运算符也可以用于两位数的数值交换,因为^满足交换律。

	a = a ^ b;
	b = b ^ a;//=b^(a^b)=a;
	a = a ^ b;//(a^b)^a=b;
	cout << a << " " << b << endl;

3、求出现奇数次的数

        当求一堆数中出现奇数次的数。

        方法:因为偶数次的数两两异或为0相抵消掉了,所有出现偶数次的数相抵消掉了,那最后就剩下的数与0异或就是它本身,则能求出出现奇数次的数了。

4、异或还能用于数字的加密

        原理就是运用了异或的交换结合律。

标签:__,cout,int,交换,运算符,二进制,异或
From: https://blog.csdn.net/twlw13/article/details/140898104

相关文章

  • STM32卡死、跑飞如何调试确定问题
    目录前言一、程序跑飞原因二、调试工具2.1Registers工具2.2Memory工具2.3 Disassembly工具2.4 CallStack工具三、找到程序跑飞位置方式一、方式二、前言我们初学STM32的时候代码难免会出现疏忽,导致程序跑飞,不再正常运行,那么都是什么情况会导致STM32程序跑飞......
  • Spark MLlib模型—决策树系列算法
    文章目录SparkMLlib模型—决策树系列算法决策树系列算法随机森林(RandomForest)GBDT(Gradient-boostedDecisionTrees)总结SparkMLlib模型—决策树系列算法前面我们重点介绍了机器学习中的特征工程,以及SparkMLlib框架支持的特征处理函数。基于线......
  • dotnet hello world
    参考资料dotnet命令参考使用dotnettest和xUnit在.NET中对C#进行单元测试DeclaringInternalsVisibleTointhecsprojXUnit输出消息创建控制台项目#创建项目目录mdDotnetStudycdDotnetStudy#创建解决方案dotnetnewsln#创建控制台项目,-n:名称,--use......
  • 如何用C写一个简易的基于终端的编辑器(1)
    参考文章https://viewsourcecode.org/snaptoken/kilo/02.enteringRawMode.html写得很详细原生模式我们要写的编辑器有点与众不同,按键功能的映射是由我们自己设置的,为了达到这一步,我们首先得进入原生模式原生模式简单来说就是单纯的接收输入,不做任何其他处理,举个例子吧,当我......
  • XMOJ 7 月月赛
    整体总结ABCD\(\colorbox{red}{84}\)\(\colorbox{yellow}{20}\)\(\colorbox{yellow}{5}\)\(\colorbox{yellow}{8}\)真的是错到怀疑人生了。开题,前两题两道大模拟。如果我先尝试开后面的题,也不至于发现不了最后一道题的解法。赛场上我选择了先开B,再开A。显......
  • 【A~E】AtCoder Beginner Contest 365
    A-LeapYear题目大意给定\(n\),求第\(n\)年的天数(\(365\)或\(366\))。思路显然地,我们需要判断这个是否为闰年。如果\(n\)不能被\(4\)整除,那么不是闰年。如果\(n\)可以被\(400\)整除,那么是闰年。如果\(n\)不可以被\(100\)整除但是可以被\(4\)整除,那么是......
  • 扫描线学习笔记
    前言扫描线思想可以在\(O(n^2)\)的时间复杂度内进行二维平面的计算,运用线段树优化可以在\(O(n\logn)\)的时间复杂度内解决。简介P5490【模板】扫描线以此题为例,介绍扫描线。最直接的想法是将每个正方形的面积先加起来,最后再减去重叠部分,但是代码难度较大,不易于实现。......
  • JavaFX 如何使用内置的对话框
    消息对话框(Alert)JavaFX的Alert类别其实就是我们熟知的MessageDialog,根据消息类型的不同,分为几种不同的AlertType,在显示时也会有不同的图标以及不同的按钮。分类可列表如下:None:不分类的消息。常用于显示使用说明。Information:一般的提示消息。常用于提示目前程序运行的状态,以......
  • 矩阵学习笔记
    矩阵引入矩阵引入来源于简洁表示线性方程组例如:\[\begin{cases}2x+5y=10\\4x+9y=39\end{cases}\]可以表示为:\[\begin{bmatrix}2&5\\4&9\end{bmatrix}\times\begin{bmatrix}x\\y\end{bmatrix}\]矩阵乘法定义矩阵\(A\)为\(n\timesm\)的矩阵,\(B\)为\(......
  • 安卓旧手机用作热点设备方法汇总
    手机当作光猫连接路由器点击跳转 Tasker安卓手机充电自动开热点点击跳转这个方法我用荣耀V20测试,不能监控 framework设置热点永不超时关闭点击跳转 ......