C语言、Java语言、C#语言中的按位运算符中的取反操作的具体步骤

C语言、Java语言、C#语言中的按位运算符中的取反操作的具体步骤
①、求出原数的补码
②、对补码的每一位包括符号位,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









C语言、Java语言、C#语言中的按位运算符中的取反操作的具体步骤,布布扣,bubuko.com

C语言、Java语言、C#语言中的按位运算符中的取反操作的具体步骤

上一篇:数据结构 - 希尔排序(Shell's Sort) 详解 及 代码(C++)


下一篇:国内某通信设备制造商JavaEE开发岗面试题