在js中,运算符"~"到底做了什么?
规律很容易找到 -(x+1)
~5=-6
百度了很多文章,基本都只是说按位取反,然后自己算了一下
例如 1 二进制为00000001 取反后 11111110 明显不对
其实不是这样子算的,因为有符号数是以补码的形式存储的
(当然,js中只有一种数字类型,64位浮点格式)
1在计算机中的值:0000001(正数的原、反、补是一样的)
取反后:11111110(这是一个负数,反码=补码+1)
补码:11111101(那么补码=反码-1)
原码:10000010(十进制为-2)
那么有什么用呢?
目前,我看到的是
~~ 转换成数字并且把小数点去掉 效率比Math.floor高
!!~ 判断一个数是否大于0 大于0 返回true 小于0返回false
这里也就大致讲个明白,如果有错,请指出,谨防误导他人