시프트 연산은 변수의 비트를 왼쪽 또는 오른쪽으로 이동시키는 연산입니다. 이는 자바스크립트에서도 사용할 수 있으며, 변수를 비트 수준에서 조작할 수 있는 강력한 도구입니다. 시프트 연산을 사용하여 숫자의 배수 계산, 비트 필드 조작 및 효율적인 데이터 압축 등을 수행할 수 있습니다. 이번 블로그에서는 자바스크립트에서 시프트 연산을 수행하는 방법에 대해서 알아보겠습니다.
1. 비트 왼쪽 시프트 («)
비트 왼쪽 시프트 연산은 변수의 비트를 왼쪽으로 이동시킵니다. 이동된 비트는 왼쪽이나 오른쪽에 새로 생긴 비트로 채워집니다. 시프트된 결과는 2의 거듭제곱 만큼 증가하게 됩니다.
let x = 5; // 00000101 (2진수)
let result = x << 2; // 왼쪽으로 2비트 시프트
console.log(result); // 결과: 20 (00010100)
위의 예제에서는 변수 x
를 왼쪽으로 2비트 시프트하였습니다. 시프트된 결과는 x
의 값에 2의 거듭제곱 (2^2 = 4) 만큼 곱해진 값인 20이 됩니다.
2. 비트 오른쪽 시프트 (»)
비트 오른쪽 시프트 연산은 변수의 비트를 오른쪽으로 이동시킵니다. 이동된 비트는 왼쪽이나 오른쪽에 새로 생긴 비트로 채워집니다. 시프트된 결과는 2의 거듭제곱 만큼 감소하게 됩니다.
let x = 20; // 00010100 (2진수)
let result = x >> 2; // 오른쪽으로 2비트 시프트
console.log(result); // 결과: 5 (00000101)
위의 예제에서는 변수 x
를 오른쪽으로 2비트 시프트하였습니다. 시프트된 결과는 x
의 값에 2의 거듭제곱 (2^2 = 4) 만큼 나눠진 값인 5가 됩니다.
3. 부호 있는 비트 오른쪽 시프트 (»>)
부호 있는 비트 오른쪽 시프트 연산은 변수의 비트를 오른쪽으로 이동시키지만, 왼쪽에 새로운 비트를 채웁니다. 이 연산은 양수와 음수를 구분하는 가장 왼쪽의 부호 비트가 영향을 받지 않고 이동합니다.
let x = -8; // 11111000 (2진수)
let result = x >>> 2; // 오른쪽으로 2비트 시프트
console.log(result); // 결과: 1073741821 (00111110100000101000111110100011)
위의 예제에서는 변수 x
를 오른쪽으로 2비트 시프트하였습니다. 부호 있는 비트 오른쪽 시프트 연산은 음수를 양수로 처리하기 때문에 x
의 값이 1073741821로 변환됩니다.
시프트 연산은 자바스크립트에서 비트 단위 조작을 수행하기 위해 강력한 도구로 사용될 수 있습니다. 위의 예제는 기본적인 시프트 연산의 사용법을 보여주기 위한 것이며, 실제 프로그래밍에서는 더 복잡한 시프트 연산을 수행할 수도 있습니다. 이를 통해 데이터를 효율적으로 처리하고 성능을 개선할 수 있습니다.