理论教育 C语言程序设计:按位异或运算方法

C语言程序设计:按位异或运算方法

时间:2023-11-21 理论教育 版权反馈
【摘要】:按位异或运算的操作符为“^”。按位异或运算是将两个操作数取二进制,然后将对应的各二进制位相异或。任何数与其自身进行按位异或运算其结果为0。任何数与一个数进行按位异或运算,其结果再与同一个数再做一次按位异或运算,则最后结果与原数相同。假如a为原文,k为密钥,a^k^k可以得到a,其中a^ k用于加密过程,其结果为密文b,b^k结果为a,实际为一解密过程。大小写字母互相转化也可以用通式c =c^32进行。例11.1 位逻辑运算举例。

C语言程序设计:按位异或运算方法

按位异或运算的操作符为“^”。

按位异或运算是将两个操作数进制,然后将对应的各二进制位相异或。按位异或运算是指参与运算的对应位相同(同为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 。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈