运营商我不明白

时间:2014-01-18 12:36:16

标签: c++

以下是我的考试中的代码。我评论了那些我不理解的观点。请告诉我以下操作员的意思。

int main()
{
float ans=4;
ans*=10;
cout<<ans++<<endl;
ans-=22;
cout<<++ans<<endl;
ans/=4;
cout<<ans<<endl;
ans=int(ans)<<4; // WHAT is meant by <<4?
cout<<ans<<endl;
ans=int(ans)>>3; // WHAT is meant by >>4?
cout<<ans<<endl;
ans=int(ans)^0x000F; // WHAT is meant by ^0x000F?
cout<<hex<<ans<<endl;
ans=int(ans)&0x00F0; // WHAT is meant by &0x00F0?
cout<<hex<<ans<<endl;
cout<<hex<<(0x3567 & 0xF0f0)<<endl; // WHAT is meant by (0x3567 & 0xF0f0)?
cout<<hex<<(0x3567 | 0xF0f0)<<endl; // WHAT is meant by (0x3567 | 0xF0f0)?

cout<<hex<<~0x3567<<endl; // WHAT is meant by ~0x3567



getch();
return 0;

}

2 个答案:

答案 0 :(得分:2)

<< >>

这些是移位运算符。它们将左操作数移位右操作数中给出的位数。转变的方向取决于使用两个运营商中的哪一个。

^

这是按位异或运算符。结果将设置位,其中只设置两个操作数中的一个相应位。

&

这是按位AND运算符。结果将设置位,其中两个操作数中的相应位都已设置。

|

这是按位包含OR运算符。结果将设置位,其中两个操作数中的至少一个相应位被设置。

~

这是按位NOT运算符。它是你问过的唯一的一元运算符(它有一个操作数)。结果是其操作数的一个补码(每个位都被翻转)。

答案 1 :(得分:0)

&LT;&LT;是左移操作员。和&gt;&gt;是右移操作员。 &安培;是按位和|和是按位或运算符。 ^是按位xor运算符。 有关详细信息,请参阅此处 BitWise Operators