为了账号安全,请及时绑定邮箱和手机立即绑定

这种JS写法是什么写法?

这种JS写法是什么写法?

蓝山帝景 2019-03-29 19:15:16
之前在一个外包项目里见过,但我不知道是什么写法,有点好奇。就是里面的>>> , ^ ,0xff是什么意思?
查看完整描述

6 回答

?
森栏

TA贡献1810条经验 获得超5个赞

'>>>'是js的位移运算符(无符号):

例1:

10>>>1

10的二进制代码为 1010

向右移动一位后为 0101

即 5

'^'是js里位运算异或 XOR

处理如下:

(1)真^假=真

(2)假^真=真

(3)假^假=假

(4)真^真=假


例2: 

1的二进制表达0001 

3的二进制表达0011 

xor运算后0010即十进制2

'0xFF'是计算机十六进制的表示


查看完整回答
反对 回复 2019-04-06
?
开满天机

TA贡献1786条经验 获得超13个赞

^是位运算符异或,这个是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


查看完整回答
反对 回复 2019-04-06
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

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


查看完整回答
反对 回复 2019-04-06
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

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


var result = expression1 ^ expression2;

    1001   = 0101          1100

‘>>>’ 无符号右移,忽略符号位,空位都以0补齐

& 对两个 32 位表达式的每一个位执行按位“与”运算。 如果两个位均为 1,则结果是 1。 否则,结果为 0。


查看完整回答
反对 回复 2019-04-06
?
SMILET

TA贡献1796条经验 获得超4个赞

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


查看完整回答
反对 回复 2019-04-06
?
杨魅力

TA贡献1811条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-04-06
  • 6 回答
  • 0 关注
  • 711 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信