ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS] 비트 연산자 - "&", "|", "^", "~", "<<", ">>", ">>>"
    Javascript/이론 2022. 12. 14. 13:35
    반응형

     

    1. a & b (AND)

      2진법 표기에서 a, b 각 자리에서 모두 1일 경우 해당 자리수에 1 반환

     

    const a = 5;        // 00000000000000000000000000000101
    const b = 3;        // 00000000000000000000000000000011
    
    console.log(a & b); // 00000000000000000000000000000001

     

     

    2. a | b (OR)

      2진법 표기에서 각 피연산자에서의 비트 자리에 1이 존재하는 경우 해당 자리에 1 반환

     

    const a = 5;        // 00000000000000000000000000000101
    const b = 3;        // 00000000000000000000000000000011
    
    console.log(a | b); // 00000000000000000000000000000111

     

     

    3. a ^ b (XOR)

      2진법 표기에서 각 피연산자의 자리수의 값이 동일한 경우 0을, 그 외의 경우 1을 반환

     

    const a = 5;        // 00000000000000000000000000000101
    const b = 3;        // 00000000000000000000000000000011
    
    console.log(a ^ b); // 00000000000000000000000000000110

     

     

    4. ~ (NOT)

      2진법 표기에서 피연산자의 각 자리에 NOT연산을 적용한다.

     

    const a = 5;     // 00000000000000000000000000000101
    const b = -3;    // 11111111111111111111111111111101
    
    console.log(~a); // 11111111111111111111111111111010
    console.log(~b); // 00000000000000000000000000000010

     

     

    5. a << b (LEFT SHIFT)

      2진법 표기에서 a 를 b 비트 만큼 왼쪽으로 이동. 범위를 초과한 비트를 삭제되며 오른쪽에서 0이 채워진다.

     

    const a = 5;         // 00000000000000000000000000000101
    const b = 2;         // 00000000000000000000000000000010
    
    console.log(a << b); // 00000000000000000000000000010100

     

     

    6. >> (RIGHT SHIFT)

      2진법 표기에서 a 를 b 비트만큼 오른쪽으로 이동. 우측으로 범위를 초과한 비트는 삭제되며, 좌측에서는 맨 왼쪽 비트의 복사본이 채워진다.

     

    const a = 5;          //  00000000000000000000000000000101
    const b = 2;          //  00000000000000000000000000000010
    const c = -5;         //  11111111111111111111111111111011
    
    console.log(a >> b);  //  00000000000000000000000000000001
    console.log(c >> b);  //  11111111111111111111111111111110

     

     

    7. >>> (ZERO-FILL RIGHT SHFT)

      2진법 표기에서 a 를 b 비트만큼 오른쪽으로 이동. 우측으로 범위를 초과한 비트는 삭제되며, 좌측에서는 0이 채워진다.

     

    const a = 5;          //  00000000000000000000000000000101
    const b = 2;          //  00000000000000000000000000000010
    const c = -5;         //  11111111111111111111111111111011
    
    console.log(a >>> b); //  00000000000000000000000000000001
    console.log(c >>> b); //  00111111111111111111111111111110
    반응형

    댓글

Designed by Tistory.