异或是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“eor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)。二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1)
在C语言中,^是异或运算符
如 5 ^ 2 = 7
即0101^0010=0111
#include<stdio.h>
int main()
{
char name[10];
unsigned int key;
int i;
printf("请输入姓名:");
for (i = 0; i <= 7; i++)//输入姓名
{
scanf_s("%c", &name[i]);//逐个储存
}
printf("请输入密钥:");
scanf_s("%d", &key);//输入密钥,通过密钥进行异或加密
printf("进行逐字母加密:\n");
for (i = 0; i <= 7; i++)//姓名有8个字母,逐个加密
{
char ciphertext;
ciphertext = 'a' + (name[i] ^ key) % 26;//逐字母进行异或运算
printf("%c",ciphertext);//输出新的字母
}
return 0;
}
小写字母l
ASCII码为 0110 1100
而5的二进制为 0000 0101
进行异或运算为 0110 1001
转为十进制为105
105%26=1
‘a’=97
因此输出为98
即小写字母b
结果如下
同时,a^b^a=b (自反)