ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바스크립트 Chapter 12 Bitwise Operators, Type Arrays and Array Buffers
    Computer Science/JavaScript 2019.05.02 03:37

     

    자바스크립트 핵심 컨셉 33가지

     

    Chapter 12. Bitwise Operators, Type Arrays and Array Buffers

     

    이번 장에서는 자바스크립트 비트 연산자와 논리 연산자에 대해 알아보자.

     

    비트 연산자 ( 0과 1을 출력 )

     

    Operator(연산자) Usage(사용법) Description(설명)
    AND(논리곱) a & b 각 자리 비트의 값이 둘다 1일 경우
    해당하는 자리에 1을 반환
    OR(논리합) a | b 각 자리 비트의 값이 둘다 0일 경우
    해당하는 자리에 0을 반환
    XOR(배타적논리합) a ^ b 각 자리 비트의 값이 같을 경우
    해당하는 자리에 0을 반환
    각 자리 비트의 값이 다를 경우
    해당하는 자리에 1을 반환
    NOT(부정) ~a 각 자리의 비트를 뒤집는다.
    Left shift(왼쪽 시프트) a << b 오른쪽에서 0들을 이동시키면서,
    a의 이진수의 각 비트를 b 비트 만큼
    왼쪽으로 이동시킨 값을 반환
    Sign-propagating right shift
    (부호 전파 오른쪽 시프트)
    a >> b 사라지는 비트를 버리면서,
    a의 이진수의 각 비트를 b비트 만큼
    이동시킨 값을 반환
    Zero-fill right shift
    (부호 없는 오른쪽 시프트)
    a >>> b 사라지는 비트를 버리고 왼쪽에서 0을
    이동시키면서, a의 이진수의 각 비트를
    b비트 만큼 이동시킨 값을 반환

     

    비트 단위 연산자 예제

     

    console.log(15 & 9); // 9 이진법 1111 & 1001 = 1001
    console.log(15 | 9); // 15 이진법 1111 | 1001 = 1111
    console.log(15 ^ 9); // 6 이진법 1111 ^ 1001 = 0110
    console.log(~9); // -10 이진법 00000000...00001001 = 11111111...11110110
    // ~x의 평가 값은 -x-1의 평가값과 동일

     

    비트단위 이동 연산자 예제

     

    console.log(9 << 2) // 36 이진법 1001 2비트 왼쪽으로 이동 100100
    console.log(9 >> 2) // 2 이진법 1001 2비트 오른쪽으로 이동 10
    console.log(19 >>> 2) // 4 이진법 10011 2비트 오른쪽으로 이동 100

     

    논리 연산자 ( boolean 값을 출력 )

     

    Operator Usage Description
    Logical AND( && ) a && b a, b 둘 다 true면 true
    둘 중 하나라도 false면 false
    Logical OR( || ) a || b a, b 둘 중 하나라도 true면 true
    Logical NOT ( ! ) !a 피 연산자의 boolean 값을 반대로

     

    논리 AND( && ) 예제

     

    console.log(true && true); // true
    console.log(true && false); // false
    
    // 첫 번째 피연산자가 거짓으로 변환될 수 있으면 왼쪽 수식의 값을 반환
    console.log(0 && true); // 0
    console.log("" && true); // (빈 문자열)
    console.log(null && true); // null
    console.log(undefined && true); // undefined
    
    // 첫 번째 피연산자가 거짓으로 변환될 수 없으면 두 번째 피연산자 평가하고
    // 해당 수식의 변환되지 않은 값을 반환
    console.log(10 && true); // true
    console.log(true && 20); // 20

     

    논리 OR ( || ) 예제

     

    console.log(true || true); // true
    console.log(true || false); // false
    console.log(false || false); // false
    
    // 왼쪽 수식의 값이 참으로 변환 될 수 있으면 변환되지 않은 왼쪽 값 반환
    console.log('a' || true); // a
    console.log(20 || false); // 20
    
    // 왼쪽 수식의 값이 거짓으로 변환 될 수 있으면 오른쪽 수식 평가 후 변환되지 않은 값 반환
    console.log(false || 'a'); // a
    console.log(false || 20); // 20

     

    논리 NOT ( ! ) 예제

     

    console.log(!true); // false
    console.log(!false); // true
    console.log(!1); // false
    console.log(!0); // true
    

    댓글 0