Skip to content
On this page

一元运算符一个操作数,二元运算符俩个操作数,三元运算符三个操作数

+ 一元加运算符将操作转换为 Number 类型。
- 一元减运算符将操作转换为 Number 类型并取反。
~ 按位非运算符
!逻辑非运算符

下面都属于二进制位运算符

二进制与运算符(&): 如果两个符号位都为1,则结果为1,否则为0

javascript
1100 & 0101 返回 0100

二进制或运算符(|): 如果两个符号位都为0,则结果为0,否则为1

javascript
1100|0101 返回1101

二进制异或运算符(^): 若两个二进制位相同,则结果为0;否则为1

javascript
1100 ^ 0101 返回 1001

二进制非运算符(~): (一元运算符)取反,二进制位0变1,1变0,是一元运算符,只有一个操作数

javascript
~1100 返回 0011

二进制左位移运算符(<<): 相当于乘以2的几次方

javascript
5(十进制) << 3 相当于 5*(2的三次方)
左移操作符 (<<) 将第一个操作数向左移动指定位数,
左边超出的位数将会被清除,右边将会补零。

二进制右位移运算符(>>): 相当于除以2的几次方

javascript
5(十进制) >> 3 相当于 5/(2的三次方)

>>是将一个操作数按指定移动的位数向右移动,右边移出位被丢弃,左边移出的空位补符号位(最左边那位)

javascript
const b = 2;          //  00000000000000000000000000000010
const c = -5;         //  11111111111111111111111111111011
因为是负数,前面补了1,1代表符号
console.log(c >> b);  //  11111111111111111111111111111110

二进制无符号右位移(>>>): 也叫作头部补零右位移运算符

javascript
const b = 2;          //  00000000000000000000000000000010
const c = -5;         //  11111111111111111111111111111011
不管正负,前面只补0
console.log(c >> b);  //  00111111111111111111111111111110
因此其表示的结果始终为非负数,与其它按位运算符不同,
无符号右移返回无符号 32 位整

如果移位的位数为负数

8>>-31===8>>1  8>>-32===8>>0  8<<-31==8<<1
当移位的位数是负值时,实际移位的位数是:
用被移位数值类型的最大位数和移位位数相加,
如果结果还是负数,结果继续 加上被移位数值类型的最大位数,
直到结果不为负数为止,此时的结果即为最终移位的位数

如果移位的位数为负数大于32情况请看下面文章

https://blog.csdn.net/fengye_csdn/article/details/122714400

如有转载或 CV 的请标注本站原文地址