항목 26 에서 체스의 플레이 데이터를 저장하는데, 각 바이트마다 쓸수 있는 것을 생각해 보았다. 그런데 이해가 되지 않는것이 마지막 12 비트를 기록하는 방법이다. 이번 항목은 그 방법들에 대해서 논하는 것이다. 최소한의 인터페이스는 다음과 같을 것이다. class BitBuffer { public: // p의 첫번째 비트로부터 num개의 비트들을 추가한다. void Append( unsigned char *p, size_t num ); // 실제로 쓰이는 비트 개수를 조회한다. size_t Size() const; // start 번째의 비트부터 num 개의 비트들을 얻고, // 그것들을 dst의 첫 번째 비트부터 저장한다. void Get( size_t start, size_t num, unsign..
비트 다루기 검색 결과
해당 글 2건
항목 27 : 자료 포맷과 효율성, 2부 : 비트 다루기 ( 난이도 : 8 )
책 정리/Exceptional C++ Style
2009. 1. 24. 04:07
항목 26 : 자료 포맷과 효율성, 1부 : 간결함 ( 난이도 : 4 )
1 ) 표준 컨테이너 deque, list, set, vector가 데이터를 적재하기 위해, 얼마나 추가비용을 부담해야 하는가? 참조 : http://ikpil.com/817 2 ) 월드와이드 체스 서버를 만들고, 각 경기의 플레이를 저장한다고 하자. 플레이어의 이름이나 기타 부수적인 것을 저장하는것이 아닌, "플레이 자체"를 저장하는 것에만 초점을 맞추고, 이 데이터를 저장하기 위해 얼만큼의 메모리가 필요 할까? 전제로 반수씩 기록한다. 플레이어 정보(이름, 승패 등...)는 제외시킨다. 1 바이트당 8비트로 한다. 체스판은 세로(row)8줄 : 1 ~ 8 가로(col) 8줄 : a ~ h 이다. 유닛은 킹,퀸,루크,비숍,나이트,폰, 이 있다. 플레이어는 두명이다. a. 반수 하나 당 128 바이트 이..
책 정리/Exceptional C++ Style
2009. 1. 24. 03:51
최근댓글