수색…


비트 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에서만 유효합니다.)

Bitwise 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에서는 동일합니다. 132 왼쪽 시프트하면 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

실제로 계산의 속도가 1 억 3 천만 건에 이르지 않는 한 산술 속도가 코드 실행에 걸리는 시간에 큰 영향을 미치지 않습니다. 그러나 C 프로그래머는 이런 종류의 것을 좋아합니다!



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow