首页 > 其他分享 >或、与、非、异或用途

或、与、非、异或用途

时间:2024-05-18 18:51:27浏览次数:22  
标签:右移 用途 1111 1110 异或 1010 位为

一、关键词

**|(或)、&(与)、~(非)和^(异或)** 
符号 描述 运算规则
& 两个位都为1时,结果才为1
两个位都为0时,结果才为0
^ 两个位相同为0,相异为1
~ 左移 0变1,1变0
<< 左移 各二进位全部左移若干位,高位丢弃,低位补0
>> 右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

二:作用

1. 与:
- 清零:如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
- 取一个数的指定位:比如取数 X=1010 1110 的低4位,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位与运算(X&Y=0000 1110)即可得到X的指定位。
- 判断奇偶:只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数。因此可以用if ((a & 1) == 0)代替if (a % 2 == 0)来判断a是不是偶数。
2. 或:
- 常用来对一个数据的某些位设置为1:比如将数 X=1010 1110 的低4位设置为1,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位或运算(X|Y=1010 1111)即可得到。
3. 异或:

异或的性质:

  1. 交换律
  2. 结合律 (ab)c == a(bc)
  3. 对于任何数x,都有 xx=0,x0=x
  4. 自反性: abb=a^0=a
- 翻转指定位:比如将数 X=1010 1110 的低4位进行翻转,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行异或运算(X^Y=1010 0001)即可得到。
- 与0相异或值不变:例如:1010 1110 ^ 0000 0000 = 1010 1110
- 交换两个数:
	void Swap(int &a, int &b){
    if (a != b){
        a ^= b;
        b ^= a;
        a ^= b;
    }
}
4. 取反:
- 使一个数的最低位为零:使a的最低位为0,可以表示为:a & ~1。~1的值为 1111 1111 1111 1110,再按"与"运算,最低位一定为0。因为" ~"运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。
5.左移运算法:
定义:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。设 a=1010 1110,a = a<< 2 将a的二进制位左移2位、右补0,即得a=1011 1000,若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。
6.右移运算法:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。例如:a=a>>2 将a的二进制位右移2位,左补0 或者 左补1得看被移数是正还是负,操作数每右移一位,相当于该数除以2。

三、实际运用

标签:右移,用途,1111,1110,异或,1010,位为
From: https://www.cnblogs.com/lvshen/p/18199627

相关文章

  • F. 十六进制的异或
    原题链接题解1.异或规则为不进位加法,可以看作位运算2.查找的时间复杂度必不能高,\(log_{16}{10^{18}}·2e5\)2.所以,补齐前缀0,这样就能用字典树了code#include<bits/stdc++.h>usingnamespacestd;#definelllonglong//Trie数组的定义,大小为2000005*16,适应十六进制......
  • [ISITDTU 2019]EasyPHP RCE异或限制
    解决一个一直以来的问题,RCE的异或绕过问题。先了解下奇技淫巧吧-->https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html接下来说说今天的问题,在做异或问题是发现许多payload都是(xxxxx)^(%ff....),这都是怎么来的呢。现在说说吧,就比如拿'_'号来说,实质上异......
  • Acwing 143. 最大异或对
    题意:n个数,求任意两个数的最大异或值。思路:01前缀树总结:确定了处理01最大异或问题时,采用先bitset<32>(x).to_string()再插入和计算的方式。32位有符号整数的最大值应该是(1<<31)-1,而不是1<<32位,1<<32位代表这个1在第33位上。但是给bitset开的时候,要开到32位。此时最高位......
  • 重写DRF的to_representation和to_internal_value方法有什么用途?
    DRF所有序列化器类都继承了BaseSerializer类,通过重写该类的to_representation()和to_internal_value()方法可以改变序列化和反序列化的行为,比如给序列化后的数据添加额外的数据,或者对客户端API请求携带的数据进行反序列化处理以及用来自定义序列化器字段。to_representation(......
  • 异或
    这道题目的思路比较好由于\(1\)到\(n\)的路径很多,我们猜想,任意选一条路径可以通过某种异或运算来得到最优解证明:假设我们选出的路径不是最优路径,那么对于另一条最优路径,一定可以通过我们选出的路径异或上若干个简单环来达到。举个例子说明假设我们选出的是直线段\(AE\),最优的......
  • 异或与区间加题解
    异或与区间加题解简要题意给定\(n,m,K,a_{1...n}\),和\(m\)个三元组\((x_i,y_i,z_i)\),定义\(calc(l,r)=a_l\bigoplusa_{l+1}\bigoplus...\bigoplusa_r\)。对于每个三元组\((x,y,z)\),对所有满足\(x\lel\ler\ley\,\calc(l,r)=K\)的区间\((l,r)\)内的每个数\(b......
  • C#接口、抽象类、普通类和继承(子类与父类)都有其特定的用途和场景
    在C#(以及许多其他面向对象的编程语言中),接口、抽象类、普通类和继承(子类与父类)都有其特定的用途和场景。选择使用哪种机制通常取决于你的具体需求和设计目标。不过,关于“能使用接口就不用抽象类,能使用抽象类就不用类,能用父类就不用子类”的说法,这并不完全准确,因为每种机制都有其独......
  • 虚拟机VMware tools的用途(转载)[2012.2.14 sina blog]
    虚拟机VMwaretools的用途更新虚拟机中的显卡驱动,使虚拟机中的XWindows可以运行在SVGA模式下。在客户操作系统中安装VMwareTools非常重要。如果不安装VMwareTools,虚拟机中的图形环境被限制为VGA模式图形(640x480,16色)。使用VMwareTools,SVGA驱动程序被安装,VMwareWorkstati......
  • 氟树脂PFA量筒的用途和特点
    PFA量筒用途:不易漏液,能够测量高纯度强酸、强碱等各种化学溶剂。适合转移测量,保管各种液体的盛装物。是化工化学、电子产业及半导体研究室的必需品。特点:1、耐药品性强,几乎不会被化学药品,酸碱溶解;2、表面特性,表面平滑,物质难附着;3、耐热性良好,-200摄氏度~260摄氏度;4、耐腐......
  • 异或哈希
    问题:https://codeforces.com/contest/1175/problem/F关键点:随机化+异或1.为何要异或:忽略顺序将1~n随机的一一映射到longlong值域内,形成新的映射数组b。再根据异或的特点,只需要判断:b[1]⊕b[2]⊕…………⊕b[n]==b[a[l]]⊕b[a[l+1]]⊕……⊕b[a[r]]2.为何要随机,因为若不随......