프로그래머스 코테풀다가 알게된
왼쪽시프트연산자 <<
연산자는 첫 번째 피연산자를 명시된 비트 수(32의 나머지)만큼 왼쪽으로 이동합니다. 왼쪽으로 이동된 초과 비트는 폐기됩니다. 오른쪽은 움직인 비트 수 만큼 0비트로 채워집니다.
const a = 5; // 00000000000000000000000000000101
const b = 2; // 00000000000000000000000000000010
console.log(a << b); // 00000000000000000000000000010100
// Expected output: 20
a << b
는 a을 b번 왼쪽으로 시프트하는 연산입니다.
왼쪽 시프트는 주어진 수를 이진수로 표현했을 때 각 비트를 b만큼 왼쪽으로 이동시키는 연산입니다.
이동된 비트 자리에는 0이 채워지고, 가장 오른쪽 비트는 사라지고,
주어진 수에 2의 b승을 곱하는 효과입니다.
그래서 결과값 20은,
임의의 숫자 x를 왼쪽으로 y비트 단위로 이동하면 a * 2 ** b
입니다. 그래서 5*(2**2) = (2의 2승은 4) 5*4=20
다른값도 이렇게 콘솔창에 써보니 이해 뚝딱,~!
9 * ( 2 ** 5 ) = 9 * (32) = 288