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'是计算机十六进制的表示
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
TA贡献1770条经验 获得超3个赞
^ 运算符随后查看两个表达式的二进制表示形式的值,并执行按位“异或”运算。当且仅当只有一个表达式的某位为 1 时,结果中的该位才为 1。否则,结果中的该位为 0。
var result = expression1 ^ expression2;
1001 = 0101 1100
‘>>>’ 无符号右移,忽略符号位,空位都以0补齐
& 对两个 32 位表达式的每一个位执行按位“与”运算。 如果两个位均为 1,则结果是 1。 否则,结果为 0。
添加回答
举报