本文目录一览

1,c语言按位异或

按位异或需要将异或双方转换成二进制数,如当a=5时,二进制为101,与0异或后结果为100,也就是b=4的二进制了。异或时的规则是:逐位进行比较,相同为0(即1与1异或为0,0与0异或为0),不同为1(即0与1异或为1,1与0异或为1)。

c语言按位异或

2,C中按位或和按位异或有什么区别

按位或只要有一位为1,结果就为1,都为0就为0按位异或只有两个不同时,结果为1,两个都相同时为0按位或: 10 11结果为11按位异或1011结果为01
按位或"|"---有1为1 0|0=0 ; 0|1=1 ; 1|0=1 ; 1|1=1 ; 按位异或"^"---相同为0,不同为1 0^0=0 ; 0^1=1 ; 1^0=1 ; 1^1=0 ;

C中按位或和按位异或有什么区别

3,C语言问题按位与按位或按位异或按位取反解释下

先说一下布尔值的与、或、异或、反运算:与运算,两者都为真计算结果为真,反之为假:1 & 1 = 1,1 & 0 = 0,0 & 1 = 0,0 & 0 = 0;或运算,至少其一都为真计算结果为真,反之为假:1 | 1 = 1,1 | 0 = 1,0 | 1 = 1,0 | 0 = 0;异或运算,两者不同为真,反之为假:1 ^ 1 = 0,1 ^ 0 = 1,0 ^ 1 = 1,0 ^ 0 = 0;取反运算,单目运算符:~1 = 0,~0 = 1;以上例子 1 代表真,0 代表假。按位运算就是将二进制位的每一位进行如上计算。如 2 | 5,转换为二进制(以 1 字节 8 位为例):00000010 | 00000101,每个二进制位分别进行或运算后得:00000111 即 7。虽然 7 = 5 + 2 但不代表 2 | 5 = 2 + 5。如:2 | 6 = 6,5 | 6 = 7,2 | 4 | 5 | 6 | 7 = 7。同理,按位与运算 2 & 5 的结果为 0:00000010 & 00000101 = 00000000按位与运算 2 & 6 的结果为 2(二进制 00000010):00000010 & 00000110 = 00000010。同样也能算出 2 ^ 6 的结果为 4(二进制 00000101):00000010 ^ 00000110 = 00000100。取反运算 ~00000110 = 11111001。当然,对一个数字进行取反运算结果是多少,还与该类型是有符号还是无符号,占用的字节大小等有关。上面的例子只是以一个字节为例进行说明。
1 | 1 = 0吧
0&0=00&1=01&1=10|0=11|0=11|1=10^0=00^1=11^1=0~0=1~1=0

C语言问题按位与按位或按位异或按位取反解释下

4,C语言 按位两次异或是什么意思

按位两次异或是“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;意义在于,少用一个变量,节省空间//PS: 按位计算对于计算机语言而言大同小异,我偷了个懒用了javascript来写
按二进制的位做位运算,异或运算也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1)。按位两次异或,意思含混不清,猜想是 输入 无符号整数 a,b, 计算 c = a ^ b, 然后把结果再与 b 做异或,即 d = c^b, 输出 d. (有点像二维码里的计算,b是过滤器)。[不会是自己同自己求异或,自己与自己异或永远得0。]?#include <stdio.h>int main()unsigned int a,b,c;printf("input a b:");scanf("%d %d",&a,&b);printf("I read %d %d or %#x %#x\n",(unsigned)a,(unsigned)b,a,b);c = a^b;c = c^b;printf("result: %d or %#x\n",(unsigned)c,c); return 0;}
unsigned a = 1;unsigned b = 0;unsigned c = a ^ b;c ^= (a^b);
比如输入的两位无符号整数定义为a, b那么a和b的异或就是 a⊕b两次异或就是(a⊕b)⊕(a⊕b)所以不论a和b为何值,a⊕b=a⊕b两次异或就是0
按位“异或”赋值运算符 (^=) 对变量和表达式执行按位异或,并将结果赋给该变量。 result ^= expression 参数 result 任意变量。 expression 任意表达式。 说明 使用 ^= 运算符和使用下面的语句是等效的: result = result ^ expression ^= 运算符查看两个表达式的二进制表示法的值,并执行按位异或。该操作的结果如下所示: 0101 (result) 1100 (expression) ---- 1001 (结果) 当且仅当只有一个表达式的某位为 1 时,结果的该位才为 1。否则,结果的该位为 0。 【酷_酷_币】为您服务...

文章TAG:按位异或  c语言按位异或  
下一篇