取反符号的运用方法

常为javascript中的indexOf之类的函数返回值”-1”纠结,现用上取反符号

对于javascript来说,取反符号的运算过程如下:首先将对取反的数值进行二进制转换,用0在数前补满32位;

然后在32位二进制中按位取反,即1变0,0变1。如果取反的数是正数,则取反后32位二进制数第一位为负;反之亦然。总之,要对32位二进制数进行转换十进制负数的过程(先反码,加上1,在数前加上负号)

实际例子:

1
2
3
4
5
6
7
8
console.log(~2)
//2的二进制为10
//补满32位 00000000000000000000000000000010
//反码,变成11111111111111111111111111111101
//第一位是1,因此转换成10进制时要反码
//00000000000000000000000000000010
//加1,换为10进制,在数前加上负号,得-3
//输出-3

indexOf之类的函数返回值为-1,可以通过取反符号将-1化为0,有利于编写判断式。

例如

1
if(~orders.indexOf("item")){alert("Not found")}