JavaScript의 일부 알려지지 않은 연산자

자바스크립트 연산자 소개



Javascript는 아름다움과 사용 편의성으로 인해 매우 인기 있는 언어입니다. 자바스크립트를 시작하는 것은 쉽습니다. 그러나 언어를 마스터하는 것은 매우 어렵습니다. 예를 들어 모든 JS 연산자를 알지 못합니다. 당신은?

연산자 유형



Javascript에는 여러 유형의 연산자가 있습니다.
MDN Web Docs에 따르면 다음과 같습니다.
  • 할당 연산자
  • 비교 연산자
  • 산술 연산자
  • 비트 연산자
  • 논리 연산자
  • 문자열 연산자
  • 조건부/삼항 연산자
  • 쉼표 연산자
  • 단항 연산자
  • 관계 연산자

  • 이제 대부분 아시겠지만 가장 알려지지 않은 연산자에 대해 알려드리겠습니다.

    1. 이진 시프트 연산자


    C/C++로 코딩한 적이 있다면 이진 시프트 연산자를 사용했거나 적어도 들어본 적이 있을 것입니다.

    Binary Numbering System을 처리하는 동안 이진 시프트 연산자가 사용됩니다. 이것이 이러한 연산자의 존재에 대해 몰랐던 이유일 수 있습니다. 모두

    이러한 연산자는 Javascript에도 존재합니다. JS의 Left Shift( << ), Sign-propagating Right Shift(>> ) 및 Zero-fill Right Shift(>>> ) 연산자입니다.

    왼쪽 시프트( << )



    예를 들어 212와 같은 숫자를 사용하겠습니다.
    Javascript는 숫자를 64비트로 저장합니다.
    비트 연산자는 32비트를 사용합니다.
    😅 32비트를 사용하는 것은 좋은 생각이 아닐 수 있습니다. 그럼 16비트로 작업하자

    212 = 0000 0000 1101 0100
    


    Now If We Do 212 << 1 그런 다음 마지막으로 11010100를 추가하여 0를 왼쪽으로 이동합니다. 따라서 424인 0000 0001 1010 1000가 됩니다.

    console.log(212 << 1); //Prints 424
    console.log(123 << 2); //It Prints 492
    /* You Can Try it Now in Your Browser's Developer Console */
    


    부호 전파 오른쪽 시프트( >> )



    이전 것과 동일하게 작동하지만 비트를 오른쪽으로 이동합니다.

    let a = 212; // 212 = 0000 0000 1101 0100
    a = a >> 1; // 0000 0000 0110 1010 [106]
    console.log(a); // 106
    console.log(343 >> 2); //85 works like this too.
    console.log(-132 >> 2); //-33
    /*it keeps the sign, for which it is called "sign-propagating"*/
    


    0 채우기 오른쪽 시프트( >> )



    Sign-propagating Right Shift와 동일하지만 부호 비트도 이동한다는 차이점만 있습니다. 이러한 이유로 양수에서는 동일하게 작동하지만 음수에서는 다른 결과를 제공합니다.

    console.log(343 >>> 2); //85 works same
    console.log(-132 >>> 2); //1073741791 it doesn't work same as >>
    


    자세한 내용은 MDN Docs에서 확인할 수 있습니다.

    2. 이진 비트 연산자



    다시 이 연산자는 이진 계산에 사용됩니다. Bitwise AND ( & ), Bitwise OR ( | ) 및 Bitwise XOR ( ^ )이 있습니다.

    이들은 모두 주어진 숫자의 각 위치에서 비트를 계산합니다.

    0000 0001 0011 0100
    0000 0100 0010 1001
    


    같은 자리에 있는 Top Digit과 Bottom Digit을 취한다. 그리고 운영자에 따라 계산됩니다. 이들은 부울 대수 규칙을 따릅니다.

    AND( & ) 처럼

    0 & 0 = 0
    1 & 0 = 0
    0 & 1 = 0
    1 & 1 = 1
    


    또는 ( | )

    0 | 0 = 0
    1 | 0 = 1
    0 | 1 = 1
    1 | 1 = 1
    


    XOR의 경우( ^ )

    0 ^ 0 = 0
    1 ^ 0 = 1
    0 ^ 1 = 1
    1 ^ 1 = 0
    


    이 계산 후에 우리는 다음을 얻습니다.

    let a = 15; //1111
    let b = 9; //1001
    console.log(a & b); // 1111 & 1001 = 1001 (9)
    console.log(a | b); // 1111 | 1001 = 1111 (15)
    console.log(a ^ b); // 1111 ^ 1001 = 0110 (6)
    


    3. Bitwise Not 연산자



    Bitwise Not Operator ( ~ ) 주어진 숫자에 대해 10로 또는 그 반대로 변경합니다. 32비트를 모두 변경합니다.

    let a = 12; //1100
    console.log(~a); //(-13)
    /*
    You Expected 1100 to be 0011 but after altering all 32 bits we get
    1111 1111 ... 1111 0011
    which is -13
    */
    


    결론



    이 알려지지 않은 연산자는 모두 이진 시스템에서 나옵니다. 따라서 이 시점에서 바이너리를 배우는 것은 좋은 변명입니다. 바이너리는 컴퓨터를 가능하게 하는 것이기 때문입니다.

    내 첫 번째 블로그 게시물이 마음에 들었기를 바랍니다.
    나중에 보자.
    안녕👋

    좋은 웹페이지 즐겨찾기