C语言按位异或运算
发布时间:2023-05-18 13:55:48 所属栏目:语言 来源:
导读:参与^运算两个二进制位不同时,结果为 1,相同时结果为 0。例如0^1为1,0^0为0,1^1为0。
例如,9 ^ 5可以转换成如下的运算:
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在内存中的存储)
^
例如,9 ^ 5可以转换成如下的运算:
0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在内存中的存储)
^
|
参与^运算两个二进制位不同时,结果为 1,相同时结果为 0。例如0^1为1,0^0为0,1^1为0。 例如,9 ^ 5可以转换成如下的运算: 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001 (9 在内存中的存储) ^ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在内存中的存储) ----------------------------------------------------------------------------------- 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1100 (12 在内存中的存储) 9 ^ 5的结果为 12。 又如,-9 ^ 5可以转换成如下的运算: 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111 (-9 在内存中的存储) ^ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101 (5 在内存中的存储) ----------------------------------------------------------------------------------- 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0010 (-14 在内存中的存储) -9 ^ 5的结果是 -14。 按位异或运算可以用来将某些二进制位反转。例如要把 n 的高 16 位反转,保留低 16 位,可以进行n ^ 0XFFFF0000运算(0XFFFF0000 在内存中的存储形式为 1111 1111 -- 1111 1111 -- 0000 0000 -- 0000 0000)。 【实例】对上面的分析进行校验。 #include <stdio.h> int main(){ unsigned n = 0X0A07002D; printf("%d, %d, %X\n", 9 ^ 5, -9 ^ 5, n ^ 0XFFFF0000); return 0; } 运行结果: 12, -14, F5F8002D (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
