【发布时间】:2018-02-20 04:53:55
【问题描述】:
我正在学习按位运算,遇到了异或运算,
#include<stdio.h>
#include<conio.h>
int main
{
printf("%d\n",10 ^ 9);
getch();
return 0;
}
10的二进制形式---> 1 0 1 0 9的二进制形式---> 1 0 0 1
所以在 XOR 中,当一个输入为 1 而另一个为 0 时,输出为 1。
所以 10 ^ 9 的输出是 0 0 1 1 => 3
所以当尝试 -10 ^ 9 时,我得到的输出为 -1。
#include<stdio.h>
#include<conio.h>
int main
{
printf("%d\n",-10 ^ 9);
getch();
return 0;
}
谁能解释一下它是怎么变成-1的?
提前感谢所有提供帮助的人!
【问题讨论】:
-
您的
-10符号扩展。 (这就是为什么通常对 unsigned 类型进行按位运算的原因) -
您期望得到的答案是什么?如果你想要 -3,你可以使用像
-(10 ^ 9)这样的括号,但我不确定你真正想要做什么。 -
这是一个重复的问题,除了这里它是一种 c 语言并且帖子有 c++,但答案已经解释过了。因此,请在提问之前进行搜索!
标签: c bitwise-operators