C语言 异或运算

用异或算法逐字节对文件C进行加密,输出到另外一个新文件D中。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
FILE *p1,*p2;
char ch,n;
p1=fopen("D:\\源文件.txt","r");
p2=fopen("D:\\目标文件.txt","w");
if(p1==NULL||p2==NULL)
{
printf("文件打开失败\n");
exit(0);
}
printf("请输入密钥,并牢记,解密时要再次输入:");//只要再对加密的文件再进行一次异或运算就得到源文件
n=getch();
printf("*\n");
while(1)
{
ch=fgetc(p1);
if(ch==EOF)
break;
ch=ch^n;
fputc(ch,p2);
fflush(p2);
}
fclose(p1);
fclose(p2);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-04-22
上式相当于b^=a;a^=b;因此,a=b=233。相当于,a^b^a,得到b原来的值。

c语言里,异或的表达式是什么?
表达式:a xor b xor c=ab'c'+a'bc'+a'b'c+abc 多个异或连续运算,就类似数学上的连加、连乘运算:将前两个数的运算结果,与第三个数继续运算;···其中的每一步都要按照相应运算的规则进行。异或的性质遵循结合律,即(a^b)^c=a^(b^c)。所以,可以A异或(A异或B)看作a^(a^b)...

C语言的异或运算怎么算,什么叫高四位取反,
C语言的异或运算符 (^) 用于比较两个二进制数的对应位。如果对应位不同,结果为1;如果对应位相同,则结果为0。异或运算符在编程中非常常见,尤其在数据加密、位操作和位掩码等领域。举例来说,假设我们有二进制数 1010 和 1001。这里的“高四位”指的是从最左边数起的前四个二进制位,即 1010;...

c语言^什么意思
C语言中 "^" 符号的含义是位运算符中的异或操作。以下是关于 "^" 异或运算符的 异或运算基本概念:在C语言中,异或运算符"^"用于执行二进制位运算。异或操作是一种逻辑比较操作,它比较两个操作数的对应位。如果两个相应位上的值不同,则结果为1;如果两个相应位上的值相同,则结果为0。这种操...

c语言中异或是什么意思?
在C语言中,异或运算是一种常见的运算符,用符号“^”表示。异或运算的意思是,当两个二进制数位不同时,结果为1;当二进制数位相同时,结果为0。因此,异或运算常常被用来判断两个二进制数中的某些位是否相同,或将某些位取反。除了用于判断二进制数位的不同之外,异或运算在C语言中还有许多其他的...

c中的异或是什么
在C语言中,异或(XOR)是一种位运算操作符,用符号`^`表示。异或运算对两个数的二进制表示进行逐位比较,如果两个相应的位相同,则结果位为0;如果两个相应的位不同,则结果位为1。这种运算在多种场景下都非常有用,比如在不使用临时变量的情况下交换两个变量的值、进行简单的加密解密操作等。具...

c语言里“^”符号是什么意思……?
明确答案:在C语言中,“^”符号表示异或运算符。详细解释:1. 异或运算符的基本概念 在C语言中,运算符“^”用于执行位运算中的异或操作。异或是一种二进制运算,其规则是:当两个相应的二进制位相异时,结果为1;否则结果为0。这种运算在计算机内部非常常见,特别是在处理位字段或进行加密操作时。...

c语言中异或是什么意思?
在C语言中,异或运算符“^”是常用的。当两个二进制数的位不同时,异或运算的结果是1;当位相同时,结果是0。因此,异或运算常用于判断二进制数位是否一致或取反。除了二进制位判断外,异或运算在C语言中还有许多应用。例如,我们可以用它来交换两个变量的值,这种方法比使用临时变量更简洁且高效。在...

c语言中^代表什么?什么意思?
C语言中,“^”代表异或运算符。以下是 异或运算符是C语言中的一种位运算符。它用于对两个二进制数进行运算。具体来说,“^”运算符的功能是:对于每一位,如果两个相应的位相同,则结果为0;如果两个相应的位不同,则结果为1。这种操作可以实现对数据的某种特定的二进制处理。这种运算在数据处理...

异或异或的巧妙应用
异或运算符“^”在C语言中被用于两个数的位操作。其特性之一是“任何数与自身异或等于零”,即 a ^ a = 0。基于这一特性,我们可以设计出一种不借助中间变量的交换方法。具体步骤如下:1. 将两个变量a和b进行异或运算,结果存储在a中: a = a ^ b。此时a的值为a与b异或的结果,即 a ^...

C语言的异或运算
机内码(补码):23: 00000000,00010111 2: 00000000,00000010 5: 00000000,00000101 异或优先级高,先算异或,再算位或 2^5,2与5异或,异或的法则是相同的为0,不同的为1,由上面的二进制很明显结果为:00000000,00000111 再算位或,23与此结果求或,很显然仍然为:00000000,00010111 即结果是...

相似回答