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.