2个二进制数进行异或运算的C语言算法代码,我的有错,请在原来的基础上修改

#include <stdlib.h>
#include<stdio.h>
#include <math.h>

void main()
{
char key[8]={'1','1','1','1','1','1','1','1'};
int i,flag=0;
char binary[8],c[8];

while(!flag)
{
printf("请输入一个8位二进制数:");
scanf("%s",binary);
for(i=0;i<8;i++)
if(binary[i]!='1' && binary[i]!='0')
{
flag=0;
printf("你输入的不是二进制数,请重新输入\n\n");
break;
}
else
flag=1;
}
for(i=0;i<8;i++)
{

c[i]=binary[i]^key[i];

}
printf("结果是是:");
for(i=0;i<8;i++)
{
printf("%c",c[i]);
}

}

binary[i]^key[i];这个也太有问题了。。。他们是char不是int,所以'1'和1的差别。。。你可以把他们都减去‘0’在异或追问

求修改后的代码

追答

c[i]=(binary[i]-'0')^(key[i]-'0');

追问

谢谢了,你前面的一句话提醒了我,他们是char不是int,所以'1'和1的差别。。我所以直接给了Key[8]附的1.不是“1”,这样也能解决

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言 二进制 习题。。。求救。。输入两个二进制数,取反,与,或,异或...
printf(" x=%s\\n", extend(x,argv[1]));printf(" y=%s\\n", extend(y,argv[2]));printf(" ~x=%s\\n", reverse(z,x));printf(" ~y=%s\\n", reverse(z,y));printf(" x&y=%s\\n", And(z,x,y));printf(" x|y=%s\\n", Or(z,x,y));printf(" x^y=%s\\n"...

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

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

c语言程序设计题*a^=*b; *b^=*a; *a^=*b;这是一个将a,b交换的语句,但...
这是位操作符异或, 二进制的数学运算。这是一种不需要临时变量就可以交换ab的方法 你去看一下位操作

c语言中^=的原理是什么?
比如,假设我们有两个二进制数 A 和 B,进行异或运算得到的结果 C。C 的每个二进制位表示 A 和 B 对应位不同的数量。如果我们将 C 与 B 再次进行异或运算,结果会得到 A。同样地,如果先将 A 与 C 进行异或运算,结果也会得到 B。这表明,通过异或运算,我们可以实现两个数之间的相互转换。

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

c语言运算。
答案:0001 1111解析如下:x^y表示异或运算,异或运算的法则是:0^0=0; 0^1=1; 1^0=1; 1^1=0;即两个二进制数如果相同则为0,不同则为1。x='1',其二进制表示为:0011 0001,要求高3位不变,低5位取反,那就是变为0010 1110。即这个问题等价于:0011 0001 ^ y = 0010 ...

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

C语言当中a^=a+b是什么意思?
在C语言中,a^=a+b是一个复合赋值运算符,它相当于a=a^(a+b)。其中,^是按位异或运算符,它对二进制位进行操作,当两个对应的二进制位相同时,结果对应的二进制位为0,否则为1。因此,a^=a+b的意思是将a与(a+b)进行按位异或运算,然后将结果赋值给a。这个操作相当于将a的二进制位和(...

c语言里“^”符号是什么意思……?
在C语言中,运算符“^”用于执行位运算中的异或操作。异或是一种二进制运算,其规则是:当两个相应的二进制位相异时,结果为1;否则结果为0。这种运算在计算机内部非常常见,特别是在处理位字段或进行加密操作时。2. 异或运算符的具体应用 在编程中,异或运算常用于二进制数的处理。例如,假设有两个...

相似回答