c++问题x=y^~y; y&=~x+1;

#include<iostream.h>
void main()
{
int x(32),y(5);
x=y^~y;
y&=~x+1;
cout<<x<<"\t"<<y<<endl;
}

结果是-1 1
谁能给讲下结果怎么得出来的

x = y^~y
分解就是y^(~y)
~y是按位取反,那么y与~y对应的位是完全相反的。
y是0x00000005
~y是0xfffffffA
而^是异或运算,表示两个数字如果对应位置一个为1而另一个为0则运算结果为1,否则都是0
而y与~y刚好每位相反,一个为1另一个必为0。所以元运算结果是0xffffffff
而int型的0xffffffff就是-1
因此x是-1

y&=~x+1;
~按位取反,x是0xffffffff,按位取反是0x0,也就是0;然后加以是1,此时y是5,而5的32位二进制是
0000 0000 0000 0000 0000 0000 0000 0101
而1的二进制是
0000 0000 0000 0000 0000 0000 0000 0001
&表示按位与运算,如果对应位都是1则是1,否则运算结果为0。
所以运算结果是(二进制):
0000 0000 0000 0000 0000 0000 0000 0001
也就是1
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-08
1楼正解,很详细了!

c++问题x=y^~y; y&=~x+1;
而y与~y刚好每位相反,一个为1另一个必为0。所以元运算结果是0xffffffff 而int型的0xffffffff就是-1 因此x是-1 y&=~x+1;~按位取反,x是0xffffffff,按位取反是0x0,也就是0;然后加以是1,此时y是5,而5的32位二进制是 0000 0000 0000 0000 0000 0000 0000 0101 而1的二进制是 ...

c++中 赋值表达式y=x++的含义是
意思就是: y = x;x = x + 1;先把x的值赋值给y,x再进行自增长。=== 如果是y=++x;意思就是x = x+1; y=x;也就是x先自增长,再将x赋值给y;=== 望采纳,谢谢!

C++中 S+=P什么意思 类似的 X += Y X-= Y X*=y 都什么意思呢?
S+=P 相当于 S=S+P X+=Y X=X+Y X-=Y X=X-Y X*=Y X=X*Y

C++中,X==Y是什么意思
X==Y\/\/指x和y的值相等,作为条件。一般用于条件选择句,如 if(x==y){ X++;}如果x=y.则是赋值句,讲y的值给了x int x=2,y=3;x=y;\/\/x=3,y=3

用c++编程,如何实现“x= y="的输出啊,要求在同一行,并且X和 y 没有...
include <stdio.h> void main(){ int x, y;printf("请输入x,y的值:\\n");scanf("%d,%d", &x, &y);printf("x=%d y=%d", x, y);} 这样么?

c语言 ++x||++y&&++z
才需要继续执行后一项的值,你所写的程序执行过程如下:由于++x=1为真,则或运算的表达式为真,则其后的++y不执行,所以到此x=1,y=0;继续执行后面的与运算,由于前面的++x||++y表达式为真,不能够决定整个与运算表达式是否为1,则继续执行++z,所以有z=1,所以该表达式的值为1。。。

c++请帮我看看出了什么问题,我是要弄个求y的
-5<x<0 应该是 -5<x && x<0 x=0 应该是 x==0 其余的判断也是这个道理

如何理解C++的这几组代码: int z; z=x; x=y; y=z;
书上说的没错,这组代码就是交换X,Y 的值。 定义一个中间变量Z,将X的值赋给Z,再将Y的值赋给X,此时X就是Y的值。然后将Z的值赋给Y,此时Y的值就是Z的值,也就是X的值。达到两个变量交换值的目的!

对于这个C++程序,我又一些疑问,希望能帮我解读。
swap(x,y);return 0;\/\/如果想下面一句输出执行,这句移到它的后面 cout<<x<<y;} void swap(int x,int y){ cout<<x<<y;int z;z=x;x=y;y=z;cout<<x<<y;} void go(){ cout<<"GoodBye";}\/\/如果想要这个函数执行,要在前面声明然后调用!如果还有什么问题,再和我联系吧! w0...

c++(4) 重载运算符“~”(友元运算符函数),求矩阵的逆矩阵。
没问题,一切正常

相似回答