它的符号是“^”,表示两个数的二进制每一位做异或运算得到的结果。如果两个对应位的值相同,则结果为0;否则结果为1。例如,10 ^ 15的结果是5。 异或运算具有以下特点: 1.交换律:a ^ b = b ^ a。 2.结合律:(a ^ b) ^ c = a ^ (b ^ c)。 3.自反性:a ^ a = 0。 4.零元素:a ^ 0 ...
异或运算可以达到交换两数的目的,代码如下: void swap(int &a, int &b) { a = a^b; b = a^b; a = a^b; } 但不推荐使用这种方式,附上常用的临时变量方法对比说明。 临时变量方法: void swap(int &a, int &b) { int tmp = a; a = b; b = tmp; }
Java语言规范描述到:操作符的操作数是从左向右求值的。为了求表达式 x ^= expr的值,x的值是在计算expr之前被提取的,并且这两个值的异或结果被赋给变量x。在OprDemo程序中,变量x的值被提取了两次——每次在表达式中出现时都提取一次——但是两次提取都发生在所有的赋值操作之前。 下面的代码可以很好的解释其原理...
对两个操作数的每一位执行逻辑异或操作,如果两个相应的位值相同,则结果为 0,否则为 1。 异或运算符,按二进制位进行"异或"运算。运算规则: 0^0=0; 0^1=1; 1^0=1; 1^1=0; (A ^ B) 将得到 49,即为 0011 0001 ~ 对操作数的每一位执行逻辑取反操作,即将每一位的 0 变为 1,1 变为 0。
不用中间变量交换两个变量的值:1、加减法:该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失。a = a + b;b = a - b;a = a - b;2、异或法:可以完成对整型变量的交换,对于浮点型变量它无法完成交换。a = a^b;b = a^b;a = a^b;3、乘除法:可以...
& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0 | 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1 ^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1 ~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0 ...
参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。 即: 0^0 = 0, 1^0 = 1, 0^1 = 1, 1^1 = 0 按位异或的3个特点: (1) 0^0=0,0^1=1 0异或任何数=任何数 (2) 1^0=1,1^1=0 1异或任何数-任何数取反 (3) 任何数异或自己=把自己置0 ...
答案:0001 1111解析如下:x^y表示异或运算,异或运算的法则是:0^0=0; 0^1=1; 1^0=1; 1^1=0;即两个二进制数如果相同则为0,不同则为1。x='1',其二进制表示为:0011 0001,要求高3位不变,低5位取反,那就是变为0010 1110。即这个问题等价于:0011 0001 ^ y = 0010 ...
按位两次异或是“a^=b;b^=a;”这样吗,如果是的话,那么 对无符号整数而言等价于如下语句:temp=a; a^=b; b=temp;相当于a与b异或了一次,值存在a,而旧的a值又赋给了b 如果是“a^=b;b^=a;a^=b;”其实就是交换两个变量的值 等价于 temp=a;a=b;b=temp;意义在于,少用一个变量...