오늘은 비트와이즈 오퍼레이터에 대해 알아보자.
왜? 내가 오늘 쓰는 사람을 봤으니까.
자바스크립트에서는 생각보다 연산자를 많이 겹쳐쓴다. 자바책에서 본 |과 &는 그렇군 하고 이해했고, >=, <=, ==까지 그러려니 이해하고 있다가, 자바스크립트에서 드디어 === 을 만난 뒤 나는 가끔 ==== 이런 식으로 너무 많이 겹쳐쓰는 자신을 만나게 된다.
헛소리는 그만하겠다.
오늘 코드워스 풀다가 내가 만난 멋진 코드에서 누군가 코드에 | 라는 연산자를 썼다. 이게 뭘까? 무슨 뜻일까? 나는 ||은 알겠는데, |는 처음본다.
그래서 "|" js를 구글해보니 스택오버플로우 질문에 있었다.
질문을 보자.
질문 귀엽다.
이제 답변을 보자.
제일 먼저 달린 댓글들.
이 분이 하는 말은 자바스크립트가 네가 ||대신 |를 썻다고 경고를 해줬더라면 좋았을텐데 느낌이다. 두번째 답변은 너 이런식으로 비트와이즈 오알을 실수에다가 사용하면 자바스크립트를 잘 모르는거야 둘 다 질문자 너무 꼽주는 거 아니냐
다들 이렇게나 재미있는 답변을 달아주셨는데, 지금도 검색가능하니 구경가보자.stackoverflow Q: 싱글파이프가 모에요?
좀 더 밑에 보면 '이것은 실수를 정수로 변환하는 좋은 방법이야 대신에 parseInt()를 써봐.'라고 댓글을 주신 분도 있다. 오? 그래? 이게 그런 의미? 사실 이게 맞았다. 내가 본 코드에서도 그 사람은 이 연산자를 써서 나머지가 지저분하게 떨어지는 몫을 정수로 변환하고자 이걸 사용했다. ex. " (나머지가 지저분한 나누기 표현식) | 0 "
캡쳐는 더이상 하지 않았지만 맨 마지막에 정답을 써주신 분이 있는데 이 분이 비트와이즈 OR이라며 친절하게 알려주신다. 나도 이 이름으로 다시 검색했더니 엠디엔에 나온다. 즉 이것은 정식 자바스크립트 문법이다. ||를 잘못쓴 것이 아니라는 말씀이다.
마지막으로 엠디엔.
Binary bitwise operators
Bitwise operators treat their operands as a set of 32 bits (zeros and ones) and return standard JavaScript numerical values.
&
Bitwise AND.
|
Bitwise OR.
^
Bitwise XOR.
비트 연산자는 해당 피연산자를 32비트 집합(0과 1)으로 처리하고 표준 JavaScript 숫자 값을 반환합니다.
역시 엠디엔이다. 한글이든 영어든 상관없다. 읽어도 무슨 소린지 모르겠다.
| 연산자를 하나만 써서 뒤에 0을 써주면 parseInt 대신에 실수를 정수로 표현할 수 있다. 하지만 큰 수에서는 이상하게 동작하니까 쓰지 말라고 댓글들에 써있다. 왜냐하면 피연산자를 32비트로 변환하기 때문이다.