본문 바로가기
JavaScript

자바스크립트 개발자가 알아야할 33가지 개념[#12. Bitwise Operator(비트 연산자)]

by 쾌횽 2022. 5. 24.
반응형

Bitwise Operator

비트(bit) : 기술적으로 컴퓨터는 숫자나 문자, 문자열로 작동하는 것이 아니라 이진 숫자(비트)만 사용한다. 그리고 UTF-8과 같은 인코딩을 사용해 저장된 비트 조합을 숫자, 문자, 다른 기호에 매핑한다.

 

UTF-8 

유니코드를 인코딩(encoding)하는 방식이다. 전세계에서 사용하는 약속이다.

 

유니코드 : 전세계 언어를 모두 표시할 수 있는 표준코드를 만들기로 했다. 바로 유니코드(Unicode)다. 

 

자바스크립트에서 9,007,199,254,740,991까지의 범위 (64비트의 환경)를 가진 모든 정수들은 toString(2)메소드를 통해 이진 문자열로 표현 될 수 있다. 

 

비트 연산자를 이용하면 이진 문자열을 직접 비교/조작 할 수 있다.

 

 

형식화 배열 

형식화 배열(typed array)은 배열같은 객체이고 원시 이진 데이터에 엑세스하기 위한 메커니즘을 제공한다.

아시다시피 Array객체는 동적으로 늘었다 줄고 어떤 javascript값이든 가질 수 있다. 자바스크립트 엔진은 이러한 배열이 빨라지도록 최적화를 수행한다. 그러나, audio 및 video조작과 같은 기능 추가, WebSocket을 사용한 원시 데이터에 엑세스 등 웹 어플리케이션이 점점 강력해짐에 따라, 빠르고 쉽게 형식화 배열의 원시 이진 데이터를 조작할 수 있게 하는 것이 자바스크립트 코드에 도움이 될 때가 있음이 분명해 졌다.

 

그러나, 형식화 배열은 보통 배열과 혼동 되지는 않는다. 형식화 배열에 Array.isArray() 호출은 false를 반환하기에. 게다가, 보통 배열에 이용할 수 있는 모든 메서드가 형식화 배열에 의해 지원되지는 않는다 (ex. push, pop)

 

 

버퍼 및 뷰 : 형식화 배열 구조

최대 유연성 및 효율을 달성하기 위해, 자바스크립트 형식화 배열은 구현을 버퍼로 나눈다. 

버퍼(ArrayBuffer 객체에 의해 구현됨)는 데이터 부분(chunk, 덩어리)을 나타내는 객체이다. 이야기 할 형식이 없으며, 그 콘텐츠에 엑세스하기 위한 메커니즘을 제공하지 않는다. 버퍼에 포함된 메모리에 엑세스 하기위해, 뷰를 사용할 필요가 있다.

뷰는 문맥(context, 즉 데이터형, 시작 오프셋 및 요소 수)을 제공해 데이터를 실제 형식화 배열로 바꾼다.

 

 

 

 

 


참고 및 출처

반응형

댓글