¿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.

Respuestas a la pregunta(9)

Su respuesta a la pregunta