首页
学习
活动
专区
圈层
工具
发布

与(&)、或(|)、异或(^) – 位运算详解

,寄希望下次看到的时候能立马想起来而不是再去理解一次 运算符 含义 描述(位运算,基于二进制表示) 示例 & 按位与 只有参与运算的两位均为1时,结果才为1,否则为0 a与b:$a & $b | 按位或...只有参与运算的两位均为0时,结果才为0,否则为1 a或b:$a | $b ^ 按位异或 只有参与运算的两位不同时,结果才为1,否则为0 a异或b:$a ^ $b ~ 按位非(取反) 将用二进制表示的操作数中为...1的位转为0,为0的为转为1 a非:~$a 位用0补齐 a左移4位:$a<<4 >> 右移 将左边的操作数在内存中的二进制数据向右移动指定位数...,左侧移空的位用0补齐 a右移4位:$a>>4 图示说明: 定义: A=81(d)=01010001(b) B=9(d)=00001001(b) 按位与(&) 规则:0&0=0,0&1=0,1&0=0...,1&1=1 A&B运算结果:1(d)=00000001(b) 按位或(|) 规则:0|0=0,0|1=1,1|0=1,1|  1=1 A|B运算结果:89(d)=01011001(b) 按位异或(

2.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS中的位操作符:“与,或,非,异或,左移,右移”

    Javascript有算数操作符,赋值操作符,比较操作符,逻辑操作符,同时也有位操作符。 引子 先想一想,如下,该输出什么答案?...与& 与运算法则:两位同时为“1”,结果才为“1”,否则为0 5 & 1 = 1 或| 或运算法则:两位其中一个为“1”,结果为“1”,否则为0 5| 1 = 5 非 非运算法则:单目运算符 二进制原码...先求反码:1000 0000 0000 0000 0000 0000 0000 0101 2.再求补码:1000 0000 0000 0000 0000 0000 0000 0110 最高位代表符号位...1 表示负数,0 表示正数 ~5 = -6 异或^ 异或运算法则:两位不同,结果为“1”,否则为0 5^1 = 4 左移 左移运算法则:将数值向左移动若干位,用0补足 5<< 1 = 10 右移...右移运算法则:将数值向右移动若干位 5>>1 = 2

    3.7K41

    按位与& 或| 异或^ 的日常使用

    按位与: 0&0=0; 0&1=0; 1&0=0; 1&1=1; 按位或: 0|0=0; 0|1=1; 1|0=1; 1|1=1; 按位异或,在或的基础上1 1也为0:...0^0=0; 0^1=1; 1^0=1; 1^1=0; 1.一个int型字段,存储十进制的数字,比如说是5 那么该数字转成二进制是101,我自己定义从左往右数, 第一位1,代表某功能自动转发开启...第二位0,代表自动删除关闭 第三位1,代表自动保存开启 2.判断第三位是否开启自动保存的代码 ($userStatus & pow(2,3-1))!...=0 3.pow是指数表达式函数,2的2次方,转成二进制是0100,按位与0101 & 0100 是0100 十进制为4,因此不等于0为true 4.设置某一位的值,如果要设置为1代码是 $userStatus...| pow(2,3-1) 原始值为 0001,要设置第三位为1,0001 | 0100 为0101 5.把某一位设置为0,代码是 $userStatus ^ pow(2,3-1) 0101 ^ 0100

    1.6K20

    按位与、或、异或等运算方法

    按位或运算符(|) 参加运算的两个对象,按二进制位进行“或”运算。...另,负数按补码形式参加按位或运算。 “或运算”特殊作用: (1)常用来对一个数据的某些位置1。 方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。...例:将X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。 异或运算符(^) 参加运算的两个数据,按二进制位进行“异或”运算。...“异或运算”的特殊作用: (1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。...例:X=10101110,使X低4位翻转,用X ^ 0000 1111 = 1010 0001即可得到。 (2)与0相异或,保留原值 ,X ^ 0000 0000 = 1010 1110。

    3.1K30

    C的|、||、&、&&、异或、~、!运算 位运算

    位运算符有: &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。 ~取反为单目,其余都是双目运算符。...1,该位的结果值为1 ^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1 ~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0 位全部左移...若要把这结果赋给变量j,可写成: j = 017|j (3)按位异或运算符(^) 按位异或运算将两个运算分量的对应位按位遵照以下规则进行计算: 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 =...异或运算的意思是求两个运算分量相应位值是否相异,相异的为1,相同的为0。按位异或运算的典型用法是求一个位串信息的某几位信息的反。...如欲求整型变量j的最右4位信息的反,用逻辑异或运算017^j,就能求得j最右4位的信息的反,即原来为1的位,结果是0,原来为0的位,结果是1。

    2K30

    位运算的秒用--异或运算

    先不要着急,咱们来一点一点的分析 异或运算 想要看懂上面的代码,首先你得知道什么叫异或运算。 先看定义 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。(这特么是啥?)...没明白没有关系,咱们接下来看例子 举个例子 比如a=5,b=3 首先 你得把a和b转换成二进制,那么a=101, b= 011 然后a和b进行异或运算,一位一位的去对比,如果值相同,则对应位置异或运算的结果为...0,如果值不同,则对应位置异或运算的结果为1 异或运算示意图 所以a和b的异或运算的结果为 110 也就是6 异或运算也可以按照另外一个角度去理解,就是「无进位的加法」,其实也就是二进制的相加,但是加完的结果不进位而已...异或运算的特点 0和任何数N进行异或运算,结果为N 其实这个很好理解,任何数转换成二进制,每一位上的数字要么是0,要么是1,而和0进行异或,以前是0的位置和0相同,则结果为0,以前是1的位置和0不同,则结果为...1,所以运算之后结果是没变的,如下图 任何数和0进行异或运算 任何数N和自己进行异或运算,结果为0 这个也很好理解,N^N每一位肯定都会是一样的,根据异或运算的法则,结果肯定每一位都为0 任何数和自己进行异或运算

    91210

    位运算中异或的常见用法总结

    解法思路 异或的常见应用,很简单,但是注意思考角度从位出发,而不是数,这点很重要。...解法思路 异或的简单应用,两个数做异或的结果就是两个数差异所在,然后只需计算这个结果中有多少个 1 即可。...解法思路 异或的三个点顺下来,就可以很清楚地解这道题: 异或运算和乘法一样,位置和运算顺序不影响最后结果:a^b^c = b^c^a 两个相同的数做异或运算结果为零:a^a = 0 任何数和零做异或结果还是这个数本身...解法思路 这题的主要难点是如何把两个数给拆出来,如果直接运用异或算法,我们最后得到的结果是两个数做异或的结果,关键点是如何基于这个异或的结果来找到这两个数,有一点很重要的就是,异或的结果为 1 的点位只会出现在其中一个数中...,我们可以用其中一个为 1 的点位作为判断依据,这个点位存在的所有数在一起做异或,这个点位不存在的所有数一起做异或,这样就把这个问题拆解成了两个 problem 3。

    1.7K50

    Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)

    位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。...异或运算符是用符号“^”表示的,其运算规律是: 两个操作数的位中,相同则结果为0,不同则结果为1。...:"+(a^b)); } } 运行结果 a 与 b 异或的结果是:13 分析上面的程序段:a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为...位运算是对整数的二进制位进行相关操作,详细运算如下: 非位运算值表 A~A10  0 1 与位运算值表 ABA&B111100010000 或位运算值表 ABA | B111101011000...异或位运算值表 ABA&B110101011000 示例如下: [java] view plain copy int a=15;   int b=2;   System.out.println(

    2.2K10

    使用^、&(异或、并且)位运算 实现算数加法(+)

    这是我参与「掘金日新计划 · 10 月更文挑战」的第32天,点击查看活动详情 位运算 用位运算即是计算机的运算规则,而计算机只懂得二进制,所以位运算使用的进制是二进制,本文所述皆为二进制,下文中不在赘述...位运算与计算机的CPU相关,32位的CPU只能表示32位内的数。 加法计算 ☘️一位数推导 这里先用个位数的加法(只考虑个位数,不考虑进位)来进行。...1 + 1 = 0 1 + 0 = 1 0 + 1 = 1 0 + 0 = 0 可以看出,这些表达式可以用异或“^”来表示。...0 & 0 = 不进位 1 & 0 = 不进位 0 & 1 = 不进位 1 & 1 = 进位 于是在利用“位,完成“进位”操作。...000^100 = 100 (000^100)<<1 = 000 由此最后一次异或的结果就是本次算数加法计算的和。

    61610

    奶牛异或

    奶牛异或 链接:https://ac.nowcoder.com/acm/problem/22998?&headNav=acm 来源:牛客网 题目描述 农民约翰在喂奶牛的时候被另一个问题卡住了。...帮助农民约翰找出应该从哪一头奶牛开始喂,使得从这头奶牛开始的一个连续的子序列上,奶牛的附加值的异或最大。 如果有多个这样的子序列,选择结尾的奶牛社会等级最高的。如果还不唯一,选择最短的。...输出描述: 第 1 行: 3个空格隔开的整数,分别为:最大的异或值,序列的起始位置、终止位置。...示例1 输入 5 1 0 5 4 2 输出 6 4 5 说明 最大异或值为6,从第4个开始喂,到第5个结束。...4 异或 2 = 6 (100) 异或 (010) = (110) 思路:利用异或、前缀的性质,这种题目一看就是要用线性复杂度,建立一颗字典树,树上每一个值都是1-n的某一项前缀异或,然后查询的时候就可以按照找两个异或最大的模板

    1.6K30
    领券