프로그래밍
2-bit(!) 정수 연산하기
byte 아니고? 바이트 아닙니다. 비트입니다. 프로그래밍을 할 적에 극한의 메모리나 시간 효율을 추구해야 하거나 추구하고 싶을 때가 있습니다. 가령 0~3 사이의 정수 값을 한 8개 정도 저장해야 하는 상황이면 int[8]에 0~3을 넣어 $32\cdot 8=256$비트를 쓰기보다는 필요한 만큼($2\cdot 8=32$비트)만 메모리를 주고 싶은 거죠. 이게 얼마나 성능 향상을 가져올지는 모르겠지만 기분이 좋잖아요? 그래서 2비트 정수 8개를 32비트짜리 unsigned int에 채워담았다고 해봅시다(unsigned short에 꽉 채워담아도 되는데 그러면 이후 계산이 좀 곤란합니다). 전체 합 계산 이 8개의 정수를 모두 합하고 싶습니다. 어떻게 구현하면 효율적일까요? 반복문을 통한 나이브 구현은 이..