在C语言中,~x代表的意思是按位取反的意思。

~x也就是value的二进制表示的数值,按位取反,1取反就是0,0取反就是1,例如1011010取反后就是0100101。

其实~i,就是找到一个数x使x+i=-1。因此也就能理解为什么 ~(-1)=0,~(0)=-1了。

原码为正数,内存中的补码也为正数,按位取反后内存中的补码变为负数,当内存中的补码转化成原码时,原码等于=补码除符号位外逐位取反,并在最低位+1。

原码为负数,内存中的补码为原码的除符号位外逐位取反,并在最低位+1,按位取反后内存中的补码变为正数,当内存中的补码转化成原码时,原码=补码。