这种JS写法是什么写法?

WytheChan
  • 766

之前在一个外包项目里见过,但我不知道是什么写法,有点好奇。
就是里面的>>> , ^ ,0xff是什么意思?
JS写法

回复
阅读 4k
6 个回答
'>>>'是js的位移运算符(无符号):
例1:
10>>>1
10的二进制代码为 1010
向右移动一位后为 0101
即 5
'^'是js里位运算异或 XOR

处理如下:
(1)真^假=真
(2)假^真=真
(3)假^假=假
(4)真^真=假

例2: 
1的二进制表达0001 
3的二进制表达0011 
xor运算后0010即十进制2
'0xFF'是计算机十六进制的表示

楼主的vscode主题可否告诉一下我呢,找不到配色这么好的浅色主题。谢谢

位操作符,一看你就没看过高程3。。。

uta_li
  • 205

^ 运算符随后查看两个表达式的二进制表示形式的值,并执行按位“异或”运算。当且仅当只有一个表达式的某位为 1 时,结果中的该位才为 1。否则,结果中的该位为 0。

var result = expression1 ^ expression2;
    1001   = 0101          1100

‘>>>’ 无符号右移,忽略符号位,空位都以0补齐
& 对两个 32 位表达式的每一个位执行按位“与”运算。 如果两个位均为 1,则结果是 1。 否则,结果为 0。

xdsnet
  • 7.5k

^是位运算符异或,这个是CRC32验证码的计算,确实需要位运算啊。
其真值表是:

A  ^   B    OUT
1      0     1
0      1     1
0      0     0
1      1     0

注意是按位的,只有对应位符合上述真值表,就设置对应位的。
比如对于A=0XF即二进制数 (1111) ,B=0XA即二进制数(1010)
C=A ^ B,则C=0x5 即二进制数 (0101)

>>> 是无符号右移位运算,会把符号位一起移动,高位补0

位运算符,位运算符是在数字底层(即表示数字的 32 个数位)进行操作的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏