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









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值