:这道题的正确结果是什么?

int i=5;
int j=10;
syso(i+~j);

 

 

首先要明白在计算机中都是以补码形式存储数据的。

正数的原码、反码、补码都是一样的,负数的补码等于反码+1

~符号是单目运算符,代表按位取反,结果的每位值和原始值均相反,即原本为1结果为0,原本为0,结果为1。

例如:8位的数字在计算机中就是存储为:   1111 1111 --> 0000 0000 -->0111 1111 (-128-->0-->127)  所以数字在计算机中的存储都是有带符号位的。

 

解:10:原码为 0000 0000 0000 1010,补码也是这个

  ~10:1111 1111 1111 0101(变为负数)     补码就为:1000 0000 0000 1011  =-11,所以输出结果为-6.