按位异或运算的操作符为“^”。
按位异或运算是将两个操作数取二进制,然后将对应的各二进制位相异或。按位异或运算是指参与运算的对应位相同(同为0或1)时结果为0,对应位不同(一个为0,另一个为1)时运算结果为1。按位异或运算准则,如表11-3所示。
表11-3 按位异或运算准则
注意:
(1)按位异或运算与没有进位加法的运算结果恰好相同:0与1 、1与0运算结果都为1;0与0、1与1运算结果都为0(1 +1无进位)。
(2)“^”为按位异或运算操作符,而非乘方,切忌混淆。
(3)任何数与其自身进行按位异或运算其结果为0。
(4)任何数与一个数进行按位异或运算,其结果再与同一个数再做一次按位异或运算,则最后结果与原数相同。利用这一特点可以用于数据加密。假如a为原文,k为密钥,a^k^k可以得到a,其中a^ k用于加密过程,其结果为密文b,b^k(也就是a^k^k )结果为a,实际为一解密过程。
(5)大小写字母互相转化也可以用通式c =c^32进行。
例11.1 位逻辑运算举例。
编写程序:(www.daowen.com)
创建一个名为“eg11_1.c”的新文件,在编辑窗口中输入下面的程序代码。
运行结果:
程序说明:
首先将操作数转换成二进制数,再进行相应的位运算,然后将结果转换为与原操作数相同的进制并按要求输出。
注意:
(1)对于各种位逻辑运算,按位取反、按位与、按位或及按位异或运算都不特别强调操作数的符号位,都是按照字节中对应各列进行运算,也就是符号位会被当成普通位进行处理。
(2)如果两个数的长度不同,在进行位运算时,系统会将二者按右端对齐,然后将长度短的数据进行位扩展,使得它们的长度相等之后再进行运算。具体方法是,无符号数前补0,有符号的正数前补0,有符号的负数前补1 。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。