C语言程序将字符串中每个字符与0或1进行异或运算并显示结果

说明:

通过位运算的“^”异或运算符把字符串与一个指定的值进行运算,从而改变字符串中每个字符的值,这样就可以得到一个加密后的字符串;当把加密后的字符串作为程序输入内容后,异或运算会把加密后的字符串还原为原有字符串的值。

代码:

#include "stdio.h"
void main()
{
	char String[13] = "Hello World";
	char* pStr = String;
	printf("与0异或:");
	while (*pStr != '\0')
	{
		putchar((*pStr) ^ 0);
		++pStr;
	}
	printf("\n与1异或:");
	pStr = String;
	while (*pStr != '\0')
	{
		putchar((*pStr) ^ 1);
		++pStr;
	}
}

在这里插入图片描述
或者也可这样:

#include <stdio.h>
int main(void)
{
char str[16]="Hello World";
int i;
for(i=0;str[i]!='\0';i++)
{
printf("str[%d] = %c ,hex is 0x%x\n",i,str[i],str[i]);
}
printf("异或结果:\n");
for(i=0;i<11;i++)
{
str[i] ^= 0; // <-------- 将0该成1即可与1进行异或运算
printf("str[%d] = %c ,hex is 0x%x\n",i,str[i],str[i]);
}
getchar();
return 0;

在这里插入图片描述

补充:

与运算 (“ & ”)

参与运算的两个数据,按照二进制位进行“与运算”。
运算规则:0&0=0;   0&1=0;   1&0=0;    1&1=1;
即:两位同时为1,则值为1。否则为0
例如:6 & 7 = 110 & 111 = 110 = 6
8 & 3 = 1000 & 11 = 0 = 0

或运算 (“ | ”)

参与运算的两个数据,按照二进制位进行“或运算”。
运算规则:0&0=0;   0&1=1;   1&0=1;    1&1=1;
即:参与运算的两个数据只要有一个值为1 那么值为1
例如:12 | 5 = 1100 | 101 = 1101 = 13
4 | 5 = 100 | 101 = 101 = 5 

异或运算 (“ ^ ”)

 参与运算的两个数据,按照二进制位进行“异或运算”。
 运算规则: 0&0=0;   0&1=1;   1&0=1;    1&1=0;
 即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
 例如:9^5可写成算式如下: 00001001^00000101=00001100 (十进制为12)可见9^5=12  
发布了71 篇原创文章 · 获赞 3 · 访问量 4044

猜你喜欢

转载自blog.csdn.net/zouchengzhi1021/article/details/105529942