C#~按位取反运算符

      今天用到了~(按位取反运算符),对网上搜索到的一些解释表示有点懵懵的,网上说是转换成二进制包括符号位全部取反就可以,但是总是跟自己计算出来的结果不一样,还有说这是一个有符号的二进制数的补码形式,也不是特别理解,经过我的多次查找后,结合自己的一些理解跟大家分享一下。下面我就以一个数字为例子说一下~运算的具体过程,可能会有些曲解,请大神们指正!                                                                                                                                                                                            提到~(非运算)就不得不说到原码反码补码,大家都知道计算机存储数据得方式都是以二进制得形式进行存储的,原码反码补码就是为了方便计算机运算而出现的二进制形式。                                                                                                                // ~(非运算)  位逻辑非运算按位对运算对象的值进行非运算 
 // 计算机运算的时候都是以补码的形式进行计算 ~ 符号就是求出了该数的补码的取反的原码 
 //以6为例子: 
 // 原码:补码:反码:(正数都一样(加符号位))00000110 
 //                  ~字符的运算逻辑、先取6的补码 00000110
 //                                                 然后取反得 11111001(这是一个补码)然后在求该补码的原码(该数是一个负数的反码表示形式)
 //以知一个负数的补码形式求原码 10000111(10进制表达形式为-7)
 //以-6为例子:
 // 原码:10000110
 // 反码:11111001
 // 补码:11111010
 //~字符的运算逻辑 先取-6的补码 11111010 
 //                               再取其相反 00000101(这个一个补码得表示形式) 

 //              在求其补码形式得原码 00000101(10进制表示5)(这是一个正数:原反补都一样)                                                                   以上就是我自己的一些见解,希望可以给各位同志一些帮助,当然肯定有不足之处也请各位大神指正!!!

猜你喜欢

转载自blog.csdn.net/qq_41600074/article/details/80049883