C言語プログラムは、ストリング内の各文字を0または1でXORし、結果を表示します

説明:

ビット単位の "^" XOR演算子を使用して文字列と指定された値を操作し、それによって文字列内の各文字の値を変更して、暗号化された文字列を取得できるようにします。文字列がプログラム入力として使用された後、XOR操作は暗号化された文字列を元の文字列値に復元します。

コード:

#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;

ここに画像の説明を挿入

補足:

AND演算( "&")

参与运算的两个数据,按照二进制位进行“与运算”。
运算规则: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

OR演算( "|")

参与运算的两个数据,按照二进制位进行“或运算”。
运算规则: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 

XOR演算( "^")

 参与运算的两个数据,按照二进制位进行“异或运算”。
 运算规则: 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