首页 > 其他分享 >异或运算

异或运算

时间:2024-04-06 11:55:59浏览次数:15  
标签:运算 结果 相加 一位 异或 进位

  1. 异或就是无进位相加。每一位对应相加,进位被舍弃。
    A 01101110
    B 10011101
    ->11110011
    从低往高位:0加1是1,1加0是1,1加1有一个进位,结果为零,对于下一位,忽略进位,1加1还是0,有一个进位,再下一位,忽略进位,1加0结果为1....

  2. 异或运算满足交换律,结合律。同一批数字无论异或顺序如何,最终结果都是一个。
    image-20201212190410230
    相加时每一位的1的数量不变,结果只和1的数量有关

  3. 0 ^ n=n(无进位相加),n^n=0.(每一位0+0=0,1+1=0(进位舍弃))。

  4. 设有一批数的异或结果为x,从中抽取任意位数,他们新的异或结果为y,那么剩余没被选中的数异或的结果为x^y。
    条件:a^b=c --> a=c^b, b=c^a
    image-20201212190410230
    将黑球视为1,白球视为0。那么题目可以看为0+1或1+01,0+0或1+10。与异或逻辑一致。最终结果就相当于这些球的异或和。只和黑球的数目(1的数量)有关。

异或运算交换两个数

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
	ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
	int a,b;
	cin>>a>>b;
	a=a^b;
	b=a^b;
	a=a^b;
	cout<<a<<" "<<b<<endl;
	return 0;
}

设a=甲,b=乙。
第一行 a=甲 ^ 乙;
第二行 b=甲 ^ 乙 ^ 乙 = 甲 ^ 0=甲
第三行 a=甲 ^ 乙 ^ 甲 = 0 ^ 乙=乙

异或运算交换位置两个位置的数必须不相同。否则同一位置的数会被刷成0.

标签:运算,结果,相加,一位,异或,进位
From: https://www.cnblogs.com/miao-jc/p/18064297

相关文章

  • 二进制和位运算
    1.无符号:int32位可以表示0~2^32-1位数。2.有符号:负数占1/2,正数和0占1/2首位为0表示非负。首位为1表示负数,后面是数值位。-1表示:先看正数:0001为1,减1——>0000表示0,每一位取反——>1111。-2表示:先看正数:0010,减1(向高位借位)——>0001表示1,取反——>1110。-8:1110,减1......
  • 003_Numpy的常见运算
    1.加减乘除幂运算importnumpyasnpimportseabornassnsimportmatplotlib.pyplotaspltimportmathfrommatplotlibimportcmdefvisual_2D(array,vmax,vmin):fig_width=math.ceil(array.shape[1]*0.5)fig_length=math.ceil(array.shape[0]*......
  • 【c++小课堂】赋值语句与运算符
    赋值语句 赋值语句的介绍与格式赋值语句,我们在上期已经介绍过了,它就是用来给一个变量or常量一个值的。likethis:intq;q=100;格式:变量or常量=值奇奇怪怪的赋值懒人式赋值1,运算符+'='举个例子:inta;a=5;a+=4;//和a=a+4作用一样可以这样写的运算符有:+,-,*,/,%,>>......
  • Java基础_运算符和分支结构
    今天的内容1.运算符2.分支结构if-else1.运算符1.算术运算符2.关系运算符3.逻辑运算符1.1算术运算符自增和自减​目的:让变量自身加一或者减一语法格式:变量++;先执行当前的操作,然后自身再加1++变量;变量--;--变量;packagecom.qf.a_test;public......
  • 不同类型数据运算
    Voltage_Output*51如果Voltage_Output是float型数据,运算下来是什么类型整数提升是指当参与表达式计算的操作数中有不同的整数类型时,较低精度的整数类型会被隐式提升为较高精度的整数类型。在这里,整数常量51会被隐式提升为整数(int)类型,而不是字符(char)类型。如果 Voltage_Ou......
  • P4551 最长异或路径
    原题链接题解1.任意两点间的异或和等于他们到根节点的异或和的异或,令每个点到根节点的异或值为\(path[i]\)2.建立01字典树,塞入所有\(path[i]\)然后遍历每个点,找出每个点异或最大对应的点3.如何找?往当前\(path[i]\)的每一位相反的方向移动code#include<bits/stdc++.h>u......
  • C++:递增递减运算符(16)
    递增递减就是自加1或者自减1,但是还有前置递增,后置递增,前置递减,后置递减,两者的区别也大有不同,接下来就去看一下过程a=1b=1b=++aa=2b=2a=1b=1b=a++a=2b=1a=2b=2b=--aa=1b=1a=2b=2b=a--a=1b=2递增前置递增#include<iostream>usingnamespacestd;intmain()......
  • IQMath定点数运算库性能测试
    基本信息单片机:GD32F303RC,运行主频:120MHz,SRAM:48KB,Flash:256KB,带单精度FPU编译环境:ARMCC5.06update6(build750)由于iq数的底层数据类型是4字节的int32_t因此_iq30~_iq1尽管表示的精度不同,但是运算速度是相同的。下列测试使用_iq15作为被测数据类型,能表示的范围从-65536......
  • 运算符&选择语句
    运算符运算符和表达式概述运算符:对字面量或者变量进行操作的符号;表达式:用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。举例说明:inta=10;intb=20;intc=a+b;+   :是运算符,是算......
  • 计算机组成与系统结构-第3章 运算方法和运算部件 上
    文章目录3.1高级语言和机器指令中的运算3.1.1C语言程序中涉及的运算数据的运算3.1.2MIPS指令中涉及的运算3.2基本运算部件3.2.1全加器和加法器全加器(FullAdder,简称FA)串行进位加法器/行波进位加法器(carryrippleadder,CRA)。3.2.2并行进位加法器3.2.3带标志加法器3......