정수 리터럴 접미사의 목적 (왼쪽 이동)
정수 리터럴 접미사는 왼쪽 이동 연산자와 함께 사용될 때 이동 횟수를 명시적으로 지정하는 데 사용됩니다. 이는 코드를 보다 명확하고 이해하기 쉽게 만들 수 있도록 도와줍니다.
예시
다음 코드는 10진수 리터럴 1을 2비트 왼쪽 이동시키는 예시입니다.
int x = 1 << 2;
이 코드는 x
에 4를 할당합니다. 이는 1을 2비트 왼쪽 이동하면 100 (4)이 되기 때문입니다.
int x = 0x10 << 4;
접미사 목록
다음 표는 정수 리터럴 접미사와 해당하는 10진수 값을 보여줍니다.
접미사 | 10진수 값 |
---|---|
u | unsigned int |
l | long int |
ll | long long int |
U | unsigned long int |
UL | unsigned long long int |
참고
- 정수 리터럴 접미사는 왼쪽 이동 연산자뿐만 아니라 다른 연산자와 함께 사용될 수도 있습니다.
- 접미사를 사용하지 않으면 기본적으로 int 형으로 변환됩니다.
용도
정수 리터럴 접미사는 다음과 같은 용도로 사용됩니다.
- 코드를 보다 명확하고 이해하기 쉽게 만듭니다.
- 코드의 가독성을 향상시킵니다.
- 유지 관리를 용이하게 합니다.
결론
예제 코드
왼쪽 이동 연산자와 함께 사용
// 1을 2비트 왼쪽 이동
int x = 1u << 2; // x는 4
// 0x10을 4비트 왼쪽 이동
int y = 0x10UL << 4; // y는 256
// 10진수 리터럴 100을 8비트 왼쪽 이동
int z = 100ll << 8; // z는 25600
다른 연산자와 함께 사용
// 10진수 리터럴 100에 2를 더한 후 4비트 왼쪽 이동
int x = (100u + 2) << 4; // x는 1632
// 16진수 리터럴 0x10을 2비트 왼쪽 이동 후 10을 곱함
int y = (0x10UL << 2) * 10; // y는 400
접미사를 사용하지 않은 경우
// 10진수 리터럴 100을 4비트 왼쪽 이동
int x = 100 << 4; // x는 16000 (int 형으로 변환)
// 16진수 리터럴 0x10을 2비트 왼쪽 이동
int y = 0x10 << 2; // y는 64 (int 형으로 변환)
참고
결론
정수 리터럴 접미사 대신 사용할 수 있는 방법
변수 사용
// 왼쪽 이동 횟수를 변수에 저장
const int shift_count = 2;
// 변수를 사용하여 왼쪽 이동 연산 수행
int x = 1 << shift_count; // x는 4
괄호 사용
// 왼쪽 이동 횟수를 괄호로 표현
int x = 1 << (2); // x는 4
마스크 사용
// 왼쪽 이동 횟수를 마스크로 표현
int x = 1 & (0x3 << 2); // x는 4
어떤 방법을 사용해야 할까요?
어떤 방법을 사용할지는 상황에 따라 다릅니다. 코드의 명확성과 가독성을 고려하여 가장 적절한 방법을 선택해야 합니다.
다음은 일반적인 권장 사항입니다.
- 코드가 간단하고 왼쪽 이동 횟수가 2, 4, 8과 같이 작은 경우에는 접미사를 사용하는 것이 좋습니다.
- 코드가 복잡하거나 왼쪽 이동 횟수가 변수에 저장된 경우에는 변수를 사용하는 것이 좋습니다.
- 왼쪽 이동 횟수가 여러 번 사용되는 경우에는 마스크를 사용하는 것이 좋습니다.
결론
c bit-manipulation bit-shift