¿Es ((a + (b & 255)) & 255) lo mismo que ((a + b) & 255)?
Estaba buscando un código C ++ y encontré algo como esto:
(a + (b & 255)) & 255
El doble Y me molestó, así que pensé en:
(a + b) & 255
(a
yb
son enteros sin signo de 32 bits)
Rápidamente escribí un script de prueba (JS) para confirmar mi teoría:
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;
}
}
Si bien el guión confirmó mi hipótesis (ambas operaciones son iguales), todavía no confío en ella, porque 1)aleatorio y 2) no soy matemático,No tengo idea que estoy haciendo.
Además, perdón por el título de Lisp-y. Siéntase libre de editarlo.