char a=10; a=~a; a<<=1; a>>=1; printf("%d\n",a);
预期输出为117117117,但实际输出为−11-11−11
C++标准为-std=c++11
C++
-std=c++11
~a的值是−11=(11110101)2-11=(11110101)_2−11=(11110101)2可以理解,但是向左向右移动之后最左边的符号位不应该抵消了吗?变成了(01110101)2=117(01110101)_2=117(01110101)2=117,可是为什么仍然输出−11-11−11?
~a