①、求出原数的补码
②、对补码的每一位包括符号位,0变1,1变0
③、第二步得到的数是补码形式,所以要变回原码的形式。如果这个数是正数的话,补码和原码相同不用再变了,最后的结果就是第二步的结果;负数的话,就得先减一,再按位取反既0变1,1变0,这里的符号位不变,然后得到结果。
看下面的例子:
例一 ~(-19) = 多少呢
-19的原码 10010011
-19的反码 11101100
-19的补码 11101101
对-19取反操作 00010010
此时得到的是一个数的补码形式,把它变回原码,因为这个数是一个正数,补码和原码相同,所以就是18
例二 ~19 = 多少呢
19的原码 00010011
19的反码 00010011
19的补码 00010011
对19取反操作 11101100
此时得到的是一个数的补码形式,把它变回原码,因为这个数是一个负数,负数的补码变回原码的步骤为:①对补码减一,②按位取反(这里符号位不变)
结果为 10010100
也就是-20
总结:
也就是说,对正数取反操作
①、把正数转换成二进制;
②、按位取反(包括符号位);
③、其实得到的这个补码形式的数一定是一个负数,就把它变回原码的形式,再转成十进制就行了。对负数取反的操作
①、把负数转换成二进制
②、然后把原码变成补码;
③、按位取反(包括符号位);④、其实得到的这个补码形式的数一定是一个正数,把它转换成十进制数就行了。
小发现:
对一个数取反操作,口算的方法步骤:
对这个数 +1 ,然后再取相反数。
比如上面的例子:
~(-19) = 18。 步骤:-19 + 1 = -18 ,取相反数得 18
~19 = -20。 步骤:19 + 1 = 20 ,去相反数得 -20