1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 说明:由于JavaScript位运算套用了Java的位运算,针对的是整数,所以会先转换为整数 1.使用两个位非(~~)运算符 ~运算符操作: 第1步:把运算数转换为 32 位的二进制整数。 第2步:逐位进行取反操作。 第3步:把二进制反码转换为十进制浮点数。 位非(~)运算实际上就是对数字进行取负运算,再减1,如:~12=-13; 位非(~)还会把小数部分省略掉直接去整数部分,如:~2.33=-3; 那么两个~~就清楚了,如:~~2=2、~~2.123=2; 字符窜类型的数字也可以,如:~~"2.123"=2; 如果位非(~)对非数字或者不能转为数字的对象则得到的结果是-1,当然false和ture例外,false=0,true=1,自然~true=-2
2.使用位或(|)运算 如:2.33|0=2; "2.33"|0=2;
3.使用位与(&)运算 我们通过运算方式得知,a&b,只要b>=a就可以实现a的取整了,如:2.33&2.33=2; "2.33"&"2.33"=2;
4.使用移位(>>和<<)运算 如:2.33>>0=2; 2.33<<0=2; 速度比较(1亿次运算): ~~:97ms |:94ms &:97ms >>:100ms <<:94ms 虽然显示位或(|)运算要快一点,但其实没什么意义,所以还是看个人习惯,我觉得~~就不错!
|