우리는 자바스크립트를 쓰면서 보통은 10진수 단위로 처리를 합니다.
그렇다면 2진수를 처리하는 연산자는 없을까? 했는데 존재했습니다.
그것들이 무엇인지 알아보려고 합니다.
연산자 | 효과 |
& | AND 연산 (둘 다 1이면 1, 아니면 0) |
| | OR 연산 (둘 중 하나라도 1이면 1, 둘 다 0일때만 0) |
^ | XOR 연산 (둘 다 1이거나 0이면 0, 다르면 1) |
~ | NOT 연산 (비트 반전, 1은 0, 0은 1) |
<< | 비트를 좌측으로 시프트 |
>> | 비트를 우측으로 시프트 |
>>> | 비트를 우측으로 시프트하지만 좌측을 0으로 채우기 |
" & " ( AND 논리 연산자)
이것은 많이 익숙한 연산자입니다.
보통 우리가 10진법 연산을 할때 && 이렇게하면 and로 작동이 됩니다.
그런데 & 이렇게 하나만 사용하면 2진법 연산을 할때 사용을 하게 됩니다.
예를들어봅시다
10 & 12
십진수 | 이진수 |
10 | 1010 |
12 | 1100 |
8 | 1000 |
& 연산자 작동 방식은 이진수에서 10에 대한 이진수 12에 대한 이진수에서 1이 중복되어질 때만 1로 처리하고 그외에는 전부 0으로 처리합니다.
즉 두 이진수 첫 자리는 1이기에 1을 그대로 가져오고 두 번째 자리는 12만 1이기에 0, 세 번째 자리는 10만 1이기에 다시 0 , 마지막 자리는 둘다 0이기에 0을 가져와서 결국 1000이 완성되고 그걸 십진법으로 표현하면 8이되는 것 입니다.
" | " ( OR 논리 연산자)
10진법에도 AND 연산자와 OR가 존재하니 2진법에도 AND연산자 다음 OR연산자가 존재합니다.
AND연산자가 " & " 한 개만 사용하였듯이 OR연산자도 " | " 하나만 사용합니다.
2진법의 OR논리 연산자는 아래와 같이 동작합니다.
10 | 12
십진수 | 이진수 |
10 | 1010 |
12 | 1100 |
14 | 1110 |
OR 연산자는 AND연산자와 다르게 각각의 십진수에 대한 이진수가 1을 한 개라도 포함한다면 1을 가져오게됩니다.
따라서 첫 자리는 10과 12의 이진수가 모두 1이기에 1을 가져오고 두 번째 자리는 12의 이진수가 1이기에 1을 가져오고
세 번째 자리는 10의 이진수가 1이기에 1을 가져오고 마지막 자리는 1을 가지고 있는 이진수가 없어서 0을 가져오게 됩니다.
따라서 1110 십진수로는 14가 됩니다.
" ^ " ( 베타 논리 연산자)
해당 연산자는 위 두 개의 연산자와 다르게 동작합니다.
각각의 이진수 둘다 1이거나 0이면 0, 다르면 1로 동작합니다.
예제를 보면 바로 이해가 갑니다.
10 ^ 12
십진수 | 이진수 |
10 | 1010 |
12 | 1100 |
6 | 0110 |
각각 이진수의 첫 자리는 보면 두 숫자모두 1로 같기에 0을 가져오고 두 번째 자리를 보면 10에 이진수는 0 12에 이진수는 1이여서 서로다르기에 1을 가져오고 세 번째자리도 서로 다르기에 1을 가져오고 마지막 자리는 0으로 서로 같기에 0을 가져옵니다.
그래서 결국 0110으로 십진법으로 표현하면 6입니다.
쉽게말해 같은 숫자면 0 다른 숫자면 1이 됩니다.
" ~ " ( 부정 논리 연산자 )
https://bamtory29.tistory.com/entry/javascript-%EB%B9%84%ED%8A%B8-%EC%97%B0%EC%82%B0%EC%9E%90
'Javascript > 개념' 카테고리의 다른 글
[JS - 개념] Date() (0) | 2022.07.27 |
---|---|
[JS - 개념] if / switch 문에서 or 중첩 사용시 주의할 점 (매우중요) (0) | 2022.07.26 |
[JS 개념] DOM 요소 선택 (0) | 2022.07.21 |
[JS 개념] DOM 요소 선택 (0) | 2022.07.21 |
[JS 개념] reverse() (0) | 2022.07.15 |