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