100-js按位取反

按位取反~

基本概念:

这是js中的一元操作符:按位取反。

计算规则为:

1
~x = -(x+1);

即:~-1 = 0、~1 = -2。

就来看看~1的计算步骤:

  • 1(这里叫:原码)转二进制 = 00000001

  • 按位取反 = 11111110

  • 发现符号位(即最高位)为1(表示负数),将除符号位之外的其他数字取反 = 10000001

  • 末位加1取其补码 = 10000010

转换回十进制 = -2

indexOf 神操作

~取反的用法是,是因为-1的取反操作等于0,而其他数的取反操作不等于0。所以用indexOf操作符可以用~操作来判断某个字符串里是否有某个字符。

1
2
3
4
5
6
var str = '123456'
if(~str.indexOf(0)){
console.log('因为取反之后不为零,说明indexOf的结果不等于-1,所以表示str字符串里包含了对应字符')
} else {
console.log('说明取反之后为零,说明indexOf的结果等于-1,所以表示str字符串里不包含了对应字符')
}

参考文章
参考文章