조금씩 조금씩 쌓여가고는 있지만, 이 속도가 적당한지.. 이렇게 공부하는게 맞는지 확신은 점점 묽어져만 간다. 한 야구선수가 부상 때문에 은퇴 후 체육교사가 되었다는 유투브를 봤다. 많은 동기부여가 되었다.
알고리즘 풀이를 보던 중 |
표시를 보게 되었다. 처음에는 ||
표시(OR)인 줄 알았다. 차이점을 정리해 보자.
const a = 3
const b = 1
if(a > 0 || b > 3){
console.log(true)
}
//true
조건 중 한가지라도 true이면 true를 반환한다.
const a = 9 //(00000000000000000000000000001001)
const b = 14 //(00000000000000000000000000001110)
console.log(a | b) //15(00000000000000000000000000001111)
논리연산자(||,&&...)와 같이 비트연산자
라고 OR(|)연산자 외에 다양한 것이 있다고 한다.(참조사이트 : Article | [JS] 비트 연산자(bitwise operator)jeongs)
이런 기능이 있구나 싶었는데, 문득 음수는 어떨까? 라는 궁금증이 생겼다.
JS는 모든 숫자를 64비트 부동소수점 방식으로 저장하지만, 비트 연산을 수행 할 때는 32비트 정수로 변환해 연산 후 다시 64비트로 변환해 저장한다고 한다. IEEE-754
라고 하는 부동소수점을 표현하는 표준이라고 한다. 여기에서는 32비트 기준으로 예를 들도록 하려고 한다.
컴퓨터에서 음수를 쓰는 방식이 여러가지가 있다고 한다.
//예시는 4비트 기준이다.
2 (base 10) = '0010'
-2 (base 10) = '1010'
1 (base 10) = '0001'
-1 (base 10) = '1001'
//예시는 4비트 기준이다.
1 (base 10) = '0001'
-1 (base 10) = '1110'
//예시는 4비트 기준이다.
1 (base 10) = '0001'
-1 (base 10) = '1111'
2 (base 10) = '0010'
-2 (base 10) = '1110'
이제는 조금은 이해 될거 같다. 아래 예시를 통해 마무리 짓겠다.
const a = -3 //(11111111111111111111111111111101)
const b = 3 //(00000000000000000000000000000011)
const c = a | b //(11111111111111111111111111111111)
console.log(c) // -1
비트연산자, 보수 표현에 대해서 배운시간이었다. 부동소수점 표기방법에 대해서는... 다음을 기약하기로 하였다.
[Bitwise OR (|), MDN, 2022년06월24일]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_OR
[Article | [JS] 비트 연산자(bitwise operator)jeongs, velog, 2022년06월26일 접속]
https://prod.velog.io/@jeongs/Article-%EB%B9%84%ED%8A%B8-%EC%97%B0%EC%82%B0%EC%9E%90
[자바스크립트 숫자 표현 방식, velog, 2022년06월26일 접속]
https://imcts.github.io/javascript-exponent-expression/