비트 폭 결정
uint32_t처럼 폭이 고정된 타입을 쓰면 파일 포맷과 네트워크 값 해석이 안정된다.
&, |, ^, ~, shift는 정수의 표현 비트를 직접 만진다. 몇 비트를 쓰는지, 부호 확장이 끼는지, shift 범위가 유효한지 확인해야 한다.
uint32_t처럼 폭이 고정된 타입을 쓰면 파일 포맷과 네트워크 값 해석이 안정된다.
0x04 같은 숫자보다 Readable, Writable 같은 이름이 플래그 의미를 보존한다.
1u << n에서 n이 타입 폭보다 작은지 검사하지 않으면 정의되지 않은 동작으로 갈 수 있다.
constexpr std::uint32_t Read = 1u << 0;
constexpr std::uint32_t Write = 1u << 1;
const bool canWrite = (flags & Write) != 0;