Rozpoczynamy zabawę z próbą inkrementacji o 1 przez operatory bitowe. Do dzieła!

Zobaczmy na coś takiego:

console.log(8 | 1); //9
console.log(9 | 1); //9
console.log(10 | 1); //11
console.log( 11 |  1); //11

Jak liczba jest parzysta to ma wyłączony pierwszy bit i można go włączyć – wtedy zachodzi inkrementacja o 1.

Możemy poddać liczby testowi na nieparzystość:

console.log(8 & 1); //0
console.log(9 & 1); //1
console.log(10 & 1); //0
console.log( 11 &  1); //1

No ale nam jest potrzebny test na parzystość, już to robiliśmy:

console.log((8 & 1) ^ 1); //1
console.log((9 & 1) ^ 1); //0
console.log((10 & 1) ^ 1); //1
console.log((11 & 1) ^ 1); //0

Ok, napiszmy funkcję, która parzystej włącza bit 1:

function bitwiseIncrement_v1(num){
    if((num & 1) ^ 1)
        return num | 1;
    else
        return "not implemented yet";
}

for(var i =0; i<100; i++){
    console.log(i, bitwiseIncrement_v1(i));
}

// 0 1
// 1 not implemented yet
// 2 3
// 3 not implemented yet
// 4 5
// (...)
// 61 not implemented yet
// 62 63
// (...)

Ok, parzyste z głowy. Nieparzyste w następnej lekcji.