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