Dopisujemy do naszej funkcji dodającej mechanizm wyliczania odpowiedniej liczby „w pamięci”. Do dzieła.
Przypomnijmy, na czym skończyliśmy:
function binAddDigits(x, y) {
return x ^ y;
}
console.log(binAddDigits(0, 0)); //0
console.log(binAddDigits(1, 0)); //1
console.log(binAddDigits(0, 1)); //1
console.log(binAddDigits(1, 1)); //0
Mamy tu mechanizm, który dla dwóch cyfr umieszcza odpowiednią cyfrę. Zobaczmy 1 ^ 1 i jak to się ma do 1 + 1:
1 + 1 - oczekiwany wynik 2
0 0 0 1
0 0 0 1
------- oczekiwany wynik:
0 0 1 0
1 ^ 1 - wynik 0
0 0 0 1
0 0 0 1 ^
-------
0 0 0 0
Jak widać obecny mechanizm jest w stanie przeprowadzić nam proces wstawienia odpowiedniej cyfry, ale brakuje nam mechanizmu, który wylicza to, co mamy zapisać w pamięci.
To, co w pamięci będziemy wyliczać na podstawie poprzednich cyfr, pytanie jak. Zobaczmy czego oczekujemy:
X: Y: Cyfra: W pamięci:
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Ok, jaki operator da nam wynik dla „w pamięci” taki, jakiego oczekujemy? Chyba operator &:
function binCalculateCarry(x, y) {
return x & y;
}
console.log(binCalculateCarry(0,0)); //0
console.log(binCalculateCarry(0,1)); //0
console.log(binCalculateCarry(1,0)); //0
console.log(binCalculateCarry(1,1)); //1
Ok, mamy obliczone w pamięci. Reszta w następnej lekcji.