시프트의 대입 연산 버전인 <<=와 >>=도 이와 비슷한 원칙이 적용된다.
왼쪽 시프트 연산자 <<는 주로 2의 거듭제곱을 표현할 때 사용한다. 가령 앞의 예제에서 #define문을 다음과 같이 바꿀 수 있다.
#define FLOCK_MAGPIE (1U << magpie) #define FLOCK_RAVEN (1U << raven) #define FLOCK_JAY (1U << jay) #define FLOCK_CHOUGH (1U << chough) #define FLOCK_EMPTY 0U #define FLOCK_FULL ((1U << corvid_num)-1)
이렇게 하면 열거형으로 표현할 때보다 코드를 더욱 견고하게 구성할 수 있다.