最佳答案
我浏览了一些 C + + 代码,发现了这样的东西:
(a + (b & 255)) & 255
这个替身让我很恼火,所以我想:
(a + b) & 255
(a
和 b
是32位无符号整数)
我很快写了一个测试脚本(JS)来证实我的理论:
for (var i = 0; i < 100; i++) {
var a = Math.ceil(Math.random() * 0xFFFF),
b = Math.ceil(Math.random() * 0xFFFF);
var expr1 = (a + (b & 255)) & 255,
expr2 = (a + b) & 255;
if (expr1 != expr2) {
console.log("Numbers " + a + " and " + b + " mismatch!");
break;
}
}
虽然脚本证实了我的假设(两个操作是相等的) ,我仍然不相信它,因为1) 随机的和2)我不是一个数学家,我不知道我在做什么。
另外,对于 Lisp-y 标题感到抱歉,请随意编辑它。