取反符号的运用方法
常为javascript中的indexOf
之类的函数返回值"-1"纠结,现用上取反符号
对于javascript来说,取反符号的运算过程如下:首先将对取反的数值进行二进制转换,用0在数前补满32位;
然后在32位二进制中按位取反,即1变0,0变1。如果取反的数是正数,则取反后32位二进制数第一位为负;反之亦然。总之,要对32位二进制数进行转换十进制负数的过程(先反码,加上1,在数前加上负号)
实际例子: 1
2
3
4
5
6
7
8console.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")}