扫码关注官方订阅号
看到一段代码:
var rand = function(rMi, rMa){return ~~((Math.random()*(rMa-rMi+1))+rMi);}
“~~”不知道是什么运算符?
业精于勤,荒于嬉;行成于思,毁于随。
~是二进制的按位取反,~~可以理解为是取整的简写
~
~~
先上栗子:
~~null; // => 0 ~~undefined; // => 0 ~~0; // => 0 ~~{}; // => 0 ~~[]; // => 0 ~~(1/0); // => 0 ~~false; // => 0 ~~true; // => 1 ~~1.2543; // => 1 ~~4.9; // => 4 ~~(-2.999); // => -2
对于非数字,~~的结果为0,布尔的true是1对于大于0的数,~~相当于是Math.floor对于小于0的数,~~相当于是Math.ceil
不过~~在性能上来说更快。
你可能遇到的位运算:
`+` 转数字类型。 `1<<n` 代表取2的n次方 `&1` 判断正负数 `>>>0` 判断正负 `^` 装逼的调换值的写法: 例如: var num1 = 1, num2 = 2; num1 ^= num2; // num1 = num1 ^ num2 = 1 ^ 2 = 3 num2 ^= num1; // num2 = num2 ^ (num1 ^ num2) = 2 ^ (1 ^ 2) = 1 num1 ^= num2; // num1 = num1 ^ num2 = 3 ^ 1 = 2
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
~是二进制的按位取反,~~可以理解为是取整的简写先上栗子:
对于非数字,~~的结果为0,布尔的true是1
对于大于0的数,~~相当于是Math.floor
对于小于0的数,~~相当于是Math.ceil
不过~~在性能上来说更快。
你可能遇到的位运算: