正数:求取非后的二进制码的补码,就是答案
负数:对取非后的二进制码的求其补码的两个步骤颠倒求出来的,就是答案
操作数为1,结果为0;操作数为0,结果为1
正数
0 0 0 0 0 1 0 1 = 5
~5
1 1 1 1 1 0 1 0
1 0 0 0 0 1 0 1 符号位不变,取反
1 0 0 0 0 1 1 0 符号位不变,末尾加一
~5 = 1 0000110 = -6
负数
1 0 0 0 0 1 0 1 = -5
~(-5)
0 1 1 1 1 0 1 0
0 1 1 1 1 0 1 1 符号位不变,末尾加一
0 0 0 0 0 1 0 0 符号位不变,取反
~(-5) = 0 0000100 = 4
三、测试代码
大家可以复制来验证一下上文说的对不对哈哈
void test()
{
cout << "4 & 5 = " << (4 & 5) << endl;
cout << "-4 & 5 = " << (-4 & 5) << endl;
cout << "-4 & -5 = " << (-4 & -5) << endl< cout << "4 | 5 = " << (4 | 5) << endl; cout << "-4 | 5 = " << (-4 | 5) << endl; cout << "-4 | -5 = " << (-4 | -5) << endl< cout << "4 ^ 5 = " << (4 ^ 5) << endl; cout << "-4 ^ 5 = " << (-4 ^ 5) << endl; cout << "-4 ^ -5 = " << (-4 ^ -5) << endl< cout << "~5 = " << ~5 << endl; cout << "~(-5) = " << ~(-5) << endl< cout << "5<<2 = " << (5 << 3) << endl; cout << "-5<<2 = " << (-5 << 3) << endl< cout << "5>>2 = " << (5 >> 2) << endl; cout << "-5>>2 = " << (-5 >> 2) << endl< cout << "5<<65 = " << (5 << 65) << endl; cout << "-5<<65 = " << (-5 << 65) << endl< cout << "5>>65 = " << (5 >> 10) << endl; cout << "-5>>65 = " << (-5 >> 10) << endl< } 如有不足之处,还望指正 [1]。 如果对您有帮助可以点个赞或关注,将会是我最大的动力 ↩︎