之前在一个外包项目里见过,但我不知道是什么写法,有点好奇。
就是里面的>>> , ^ ,0xff是什么意思?
^
是位运算符异或
,这个是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
^ 运算符随后查看两个表达式的二进制表示形式的值,并执行按位“异或”运算。当且仅当只有一个表达式的某位为 1 时,结果中的该位才为 1。否则,结果中的该位为 0。
var result = expression1 ^ expression2;
1001 = 0101 1100
‘>>>’ 无符号右移,忽略符号位,空位都以0补齐
& 对两个 32 位表达式的每一个位执行按位“与”运算。 如果两个位均为 1,则结果是 1。 否则,结果为 0。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
处理如下:
(1)真^假=真
(2)假^真=真
(3)假^假=假
(4)真^真=假