#include <stdio.h>
int main(int argc, const char * argv[]) {
int b =~7;
// 000000000000000000000111 7的原码
// 111111111111111111111000 ~7的值
// 100000000000000000000111 ~7的反码
// 100000000000000000001000 ~7的补码
printf("b = %d",b);
return 0;
}
这是我自己算的。~7是仅仅对7的原码按位取反,还是对它内存中存储的那个值即补码进行按位取反。从计算结果逆推好像是对原码啊,但是后面算值的时候又要将那个值当作内存中存储的数据即补码,还需要 除了首位取反加1计算原码,这不是前后矛盾么 |
|