JavaScript中一些不常见的运算符号(三分钟看完)

举报
伯约同学 发表于 2022/03/17 23:07:09 2022/03/17
【摘要】 JavaScript中一些不常见的运算符号(三分钟看完)最近在做一些算法题,有些优雅的表述中总有那么一两个不熟悉的运算符,今晚趁着还有点时间抓紧扫一下。一、求幂 ()**求幂运算符(**)返回将第一个操作数加到第二个操作数的幂的结果。它等效于Math.pow,不同之处在于它也接受BigInts作为操作数。示例:console.log(3 ** 4);// expected output: 8...

JavaScript中一些不常见的运算符号(三分钟看完)

最近在做一些算法题,有些优雅的表述中总有那么一两个不熟悉的运算符,今晚趁着还有点时间抓紧扫一下。

一、求幂 ()**

求幂运算符(**)返回将第一个操作数加到第二个操作数的幂的结果。它等效于Math.pow,不同之处在于它也接受BigInts作为操作数。

示例:

console.log(3 ** 4);
// expected output: 81

二、左移

左移操作符 (<<) 将第一个操作数向左移动指定位数,左边超出的位数将会被清除,右边将会补零。

9 << 3; // 72
// 9 * 2³ = 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
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。