game programing gems 1.10
TRANSCRIPT
Game Programing Gems
[1.10]간단하고빠른비트배열2015 – 07 – 02 NHN NEXT 남세현
간단하고빠른비트배열
비트단위연산
장점 단점
빠른연산 에러, 실수가능성
효율적인용량 컴퓨터의워드크기에의존
STL를이용한비트배열1. std::bitset<N>
2. std::vector<bool>
STL를이용한비트배열(1)1. std::bitset<N>◦ Compile때 N에의해고정됨.
◦ 크기는 [N / word 사이즈]◦ 컴파일러마다다를수있음
std::bitset 기본사용법
std::bitset 응용 (1)
std::bitset 응용 (2)
std::bitset 참고
STL를이용한비트배열(2)2. std::vector<bool>◦ Runtime때 dynamic하게사용
◦ 일반적인 std::vector와같음◦ Bit단위연산을해야하므로,
std::vector<bool>은 specialized version, 즉라이브러리측에서따로구현해놓음.
std::vector<bool> 기본및추가된함수
Endian 문제
요약 : 신경안써도된다.
Network로보낼땐?1. unsigned char배열로이루어져있다고생각하기.
std::bitset<N> -> unsigned char[(N/8 + 1)]
◦ 패키징(serializaton)만잘해서보내면됨.
결론C 스타일로비트연산해서관리하지말고◦ Int bit = 0;
bit &= 1 << 3
C++ 스타일로관리하자.◦ std::bitset(N) myBitset;
myBitset[3] = true;
C vs C++? 느려봤짜얼마나느리겠노