비트 연산자(bitwise operator)
는 인수를 32비트 정수로 변환하여 이진 연산을 수행합니다.
이런 비트 조작 관련 연산자는 자바스크립트뿐만 아니라 대부분의 프로그래밍 언어에서 지원합니다.
아래는 비트 연산 시 쓰이는 연산자 목록입니다.
비트 연산자는 저수준(2진 표현)에서 숫자를 다뤄야 할 때 쓰이므로 솔직히 웹개발(자바스크립트)에서는 흔하게 쓰이진 않습니다.(ㄱㅇㄷ)
const a = 5; // 00000000000000000000000000000101
const b = 3; // 00000000000000000000000000000011
console.log(a & b); // 00000000000000000000000000000001
//AND 비트 연산자(&)는 두 개의 피연산자의 각 자리마다 대응하는 비트가 모두 1일 경우 1을 반환합니다.
console.log(a | b); // 00000000000000000000000000000111
//비트 OR 연산자는 대응되는 두 비트 중 하나라도 1이면 1을 반환하며, 두 비트가 모두 0일 때만 0을 반환합니다.
console.log(a ^ b); // 00000000000000000000000000000000
//비트 XOR 연산자는 대응되는 두 비트가 서로 다르면 1을 반환하고, 서로 같으면 0을 반환합니다.
console.log(~a); // 11111111111111111111111111111010
//비트 << 연산자는 정해준 숫자만큼 숫자를 왼쪽으로 밀어버립니다.
console.log(a << 2) // 00000000000000000000000000010100
//비트 >> 연산자는 정해준 숫자만큼 숫자를 오른쪽으로 밀어버립니다.
console.log(a >> 2) // 00000000000000000000000000000001
비트연산을 시작하면 피연산자는 32비트 정수로 변환되며 일련의 비트(0과 1)로 표현됩니다. 32비트 이상인 숫자는 최상위 비트가 삭제됩니다. 예를 들어 32비트 이상인 다음 정수는 32비트 정수로 변환됩니다.
AND 비트 연산자(&)
는 두 개의 피연산자의 각 자리마다 대응하는 비트가 모두 1일 경우 1을 반환합니다.
둘다 1이니까
1을 출력하나만 1이니까
0을 출력하나만 1이니까
0을 출력즉 숫자 하나하나를 비교하면서 연산을 하고 그 결과로 새로운 2진수로 변환합니다.
여기서 보면 일반적인 연산자
랑 똑같은 규칙으로 연산되는걸 알 수 있습니다.
자바스크립트의 형식화 배열(Typed Array)은 일반적인 배열(Array)와 몇 가지 차이가 있는 유사 배열 객체입니다. 형식화 배열 객체의 특징은 다음과 같습니다.
마치 java의 배열과 흡사하다
let arr = [1,2,3]
let overArr = [-129, 128]
let a = new Int8Array(1, 2, 3)
console.log(a) //Uint8Array(1) [ 0 ] // 그냥 Array처럼 넣으면 안되고 배열로 넣어야 함
let b = new Int8Array(arr)
console.log(b)//Int8Array(3) [ 1, 2, 3 ]
let c = new Int8Array(overArr) // 만약 정해진 숫자를 넘겨버리면 배열의 최댓값 or 최솟값에서 넘겨져버린 숫자만큼 줄어든다
console.log(c)//Int8Array(2) [ 127, -128 ]
형식화 베열을 생성할 때는 생성자에 배열의 크기를 전달하거나 배열 또는 타입 배열을 전달해 원소를 초기화 합니다.
형식화 배열을 사용하면 일반 배열에 비하여 실행 시간과 메모리 사용 측면에서 효율적일 수 있습니다.
var buffer = new ArrayBuffer(8);
console.log(buffer)
//ArrayBuffer {
// [Uint8Contents]: <00 00 00 00 00 00 00 00>,
// byteLength: 8
//}
버퍼는 길이가 정해져 있는 이진 데이터를 저장하며 데이터 부분을 나타냅니다.
형식화 배열의 버퍼를 생성하는 방법은 아래와 같으며 생성자의 매개변수는 버퍼의 바이트 크기다.
(여기서부터 컴퓨터 공학 지식이 들어가는거가따 슬슬 무슨말인지 모르게따)