首先要记住一点是,在内存中数都是以补码的形式存在的。
其次 正数的二进制原码,反码,补码都是一样的。
负数的补码等于反码+1,反码就是原码取反。
为了方便注意符号位。
看个例子~6=-7
首先这个是正6取反运算的值是多少。
首先6的二进制原码为 110,一般这样写,带上符号位00110,最高位为符号位0,表示正数。
那么6在内存中是按它的补码存在的,正数的补码与原码相同,同样也是00110。
经过~取反运算后,得到11001。
那么现在要求的就是在内存中11001这样的形式是什么数。
首先它是一个数的补码;其次符号位为1,是负数。负数求补码的过程是反码+1,那么现在反过来求,先11001减1,得到11000,然后符号位不动,再求反,得到其原码,也就是10111,这个原码表示的数是一个负数,也就是-7.