按位非运算符

JS中的按位非运算符是~,作用是将每位二进制取反

十进制2的二进制表示为:

 0000,0010

按位取反:

 1111,1101

这是内存中的保存值,而在内存中,数值都是以二进制补码形式保存的。正数的补码和原码一样,负数的补码,原码符号位不变,将剩余位取反,得到反码,在反码的基础上最后一位加一得到负数的补码。

将二进制数表示为十进制的方法与原码转补码规则一致:

 1.符号位不变,剩余位取反

  1000,0010

 2.最后一位加1

  1000,0011

 3.得的结果1000,0011就是-3的原码形式

~(1) = -2

~(2) = -3

~(3) = -4

~(2018) = -2019

假设A为正数,~(A)结果为B。B是A的每位去反的结果,包括符号位0也取反变成了1。那么B就被当做负数保存在内存中。显示十进制数时,B除符号位外都取反,得到C,C和A的区别在于符号位不同,其他位都一样,然后C的最后一位加1得到最终结果D。D和A相比,除符号位不同外,还大一。

~(0) = -1

~(-1) = 0

~(-2) = 1

~(-3) = 2

~(-4) = 3

~~3 = 3

~~ 5 = 5

  

猜你喜欢

转载自www.cnblogs.com/bibiafa/p/9389213.html
今日推荐