JavaScript中一些不常见的运算符号(三分钟看完)
最近在做一些算法题,有些优雅的表述中总有那么一两个不熟悉的运算符,今晚趁着还有点时间抓紧扫一下。
一、求幂 ()**
求幂运算符(**
)返回将第一个操作数加到第二个操作数的幂的结果。它等效于Math.pow
,不同之处在于它也接受BigInts作为操作数。
示例:
console.log(3 ** 4);
// expected output: 81
【JavaScript中一些不常见的运算符号(三分钟看完)】二、左移
左移操作符 (
<<
) 将第一个操作数向左移动指定位数,左边超出的位数将会被清除,右边将会补零。9 << 3;
// 72
// 9 * 23 = 9 * 8 = 72
三、按位与
按位与运算符 (
&
) 在每个位上返回 1
,这两个操作数对应的位都是 1
const a = 5;
// 00000000000000000000000000000101
const b = 3;
// 00000000000000000000000000000011
console.log(a & b);
// 00000000000000000000000000000001
转成32位数,然后依次进行&操作进行比对,相同则为 1或者0不同则为0
四、按位或
相同为0,不同为1
const a = 5;
// 00000000000000000000000000000101
const b = 3;
// 00000000000000000000000000000011
console.log(a ^ b);
// 00000000000000000000000000000110
// expected output: 6
五、右移 (>>)
右移操作符 (
>>
) 是将一个操作数按指定移动的位数向右移动,右边移出位被丢弃,左边移出的空位补符号位(最左边那位)。const a = 5;
//00000000000000000000000000000101
const b = 2;
//00000000000000000000000000000010
const c = -5;
// -00000000000000000000000000000101
console.log(a >> b);
//00000000000000000000000000000001
// expected output: 1
console.log(c >> b);
// -00000000000000000000000000000010
// expected output: -2
六、无符号右移
将第一个操作数右移指定位数。多余的右移位被丢弃。零位从左边移入。符号位变为0,因此结果总是非负的。与其他按位运算符不同,零填充右移返回一个无符号32位整数。
const a = 5;
//00000000000000000000000000000101
const b = 2;
//00000000000000000000000000000010
const c = -5;
// -00000000000000000000000000000101
console.log(a >>> b);
//00000000000000000000000000000001
// expected output: 1
console.log(c >>> b);
//00111111111111111111111111111110
// expected output: 1073741822
推荐阅读
- Web3D 从入门到跑路 · 3D 初体验
- 不懂物理的前端不是好的游戏开发者(二)—— 物理引擎的学习之路
- 源码|第13期在线音乐网站前后分离springboot整合vue
- Leetcode20有效的括号(栈的经典使用示例)
- 实用工具|Mockjs模拟接口实现增删改查、分页、多条件查询
- vue从入门到成神|Vue2.x 安装 SCSS并使用
- 键盘导航
- javascript|JavaScript之变量作用域的介绍
- 工业实习日志|实习日志_2022/3/10