i: 16进制表示,i的补码: 1111 1111 1111 1111 1111 0001,源码:1000 0000 0000 0000 0000 1111,应该是-15, j 为i的取反,这里采用的是对二进制码的直接计算取返,故j的保存二进制是:0000 0000 0000 0000 0000 1110,这是14,所以j是14
~按位取反!
比如你用的16位C,int有2个字节
int i=1,则对应二进制是0000000000000001
则j=~i以后,j的值对应的二进制是1111111111111110
0xfffffff1转化为二进制11111111111111111111111111110001
去反后为1110
转化为十进制为14
首先跟你解释下:0x是十六进制的意思 i = 0xFFFFFFF1 这个是补码 ,原码是0x1000000F 化成十进制为-15
同时~代表取反:j为0xFFFFFFF1取反 为 0x0000000E 化成十进制为14