サーチ…
ビット単位のANDを用いた数値のパリティ検出
これの代わりに(残念ながら実際のコードではあまりにも頻繁に見られる)「傑作」:
function isEven(n) {
return n % 2 == 0;
}
function isOdd(n) {
if (isEven(n)) {
return false;
} else {
return true;
}
}
パリティチェックをより効果的かつ簡単に行うことができます。
if(n & 1) {
console.log("ODD!");
} else {
console.log("EVEN!");
}
(これはJavaScriptだけでなく実際に有効です)
2つの整数をビット単位のXORでスワップ(追加のメモリ割り当てなし)
var a = 11, b = 22;
a = a ^ b;
b = a ^ b;
a = a ^ b;
console.log("a = " + a + "; b = " + b);// a is now 22 and b is now 11
より速い乗算または2のべき乗による除算
私たちは、「シフト左」場合:左ビット(右)2.によって(除算)を掛けると同等であることが、ベース10で同じだシフト13
で2
ヶ所、我々が得る1300
、または13 * (10 ** 2)
12345
を3
桁右シフトして小数部分を削除すると、 12
桁、つまりMath.floor(12345 / (10 ** 3))
ます。したがって、変数に2 ** n
を掛けたければ、 n
ビットだけ左シフトすることができます。
console.log(13 * (2 ** 6)) //13 * 64 = 832
console.log(13 << 6) // 832
同様に、 2 ** n
整数除算を行うには、 n
ビット右にシフトできます。例:
console.log(1000 / (2 ** 4)) //1000 / 16 = 62.5
console.log(1000 >> 4) // 62
それは負の数でも機能します:
console.log(-80 / (2 ** 3)) //-80 / 8 = -10
console.log(-80 >> 3) // -10
実際には、演算の速度は、あなたが100億回の計算をしていない限り、コードの実行時間に大きな影響を与える可能性は低いです。しかし、Cプログラマはこのようなことを愛しています!
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow