什么是这个AS(动作脚本代码)的含义
我很困惑这个,因为我不是一个以专家什么是这个AS(动作脚本代码)的含义
while (var6 < (var5 - 1))
{
var8 = var3[(var6 + 1)];
var10 = (var7 >>> 5^var8 << 2) + (var8 >>> 3^var7 << 4)^(var13^var8) + (var4[var6 & 3^var11]^var7);
var var14:* = var3[var6] + var10;
var3[var6] = var3[var6] + var10;
var7 = var14;
var6 = var6 + 1;
}
我想知道究竟是什么,是这些运营商的意义:
-
>>>
和^
(var8 >>> 3^var7 << 4)
var11 = var13 >>> 2 & 3
这些都是已知的按位运算符,即通过二进制表示操纵整数值的运算符。您可以在ActionScript in Adobe's documentation中找到完整的运算符参考。
>>>
是bitwise unsigned right shift算子;它将位移到右侧而不保留值的符号。
^
是bitwise XOR运营商。它需要两个操作数并对它们的位执行XOR操作。
表达(var8 >>> 3^var7 << 4)
手段:
var8
比特移位3次向右(由2^3分);结果按位异或与
var7
;结果左移4位(乘以2^4)。
和表达式var11 = var13 >>> 2 & 3
手段:
var13
比特移位的2倍到右侧(由2^2分割);结果bitwise AND编辑
3
;转让给
var11
。
谢谢BoltClock为您提供帮助。我从技术上窃取了一个小问题>>和>>>之间的区别。 – Zarboot 2012-02-28 19:03:58
@Zarboot:'''保留标志;即'-8 >> 1'会给你'-4'与负号,但'-8 >>> 1'会给你一个不同的结果,因为它不保留符号位(最左边位)。另请参阅:https://en.wikipedia.org/wiki/Two%27s_complement – BoltClock 2012-02-28 19:09:11
您可以通过单击左侧的复选标记标记答案。欢迎来到这个网站! – BoltClock 2012-02-29 13:49:50
看起来反编译,我...这是很难想象谁可以肯定告诉&
和^
和使用i = i + 1
/无类型变量另一方面运算符优先级。既然有喜欢的15变量,感觉就像它的MD5算法...不知道为什么要反编译它,如果是那样的话......
所以,你还需要这很了解吧:运营商precedense and associativity
的确如此。我在网上发现了这一点,但我想知道所有这些运营商的含义是什么。是的,这是TEA实施的一部分。无论如何谢谢 – Zarboot 2012-02-29 10:52:21
非常有用。谢谢 – Zarboot 2012-02-28 21:11:52