๋งค์๊ฐ์ ์ ๊ฐ์ํ๋ผ. ์ด๋ ์ ๊ฐ ๊ฐ์ ธ์จ ๊ฒ๋ณด๋ค ๋ง์ ๊ฒ์ ๊ฐ์ง๊ณ ์ด๊ธ์ด๊ธ ๋น ์ ธ ๋ฌ์๋๋ ๋๋๊ณผ ๊ฐ์ ๊ฒ. โ์กด ์
๋ค์ดํฌ(็พ ์๊ฐ, 1932โผ )
doxygen ์ค๋ช ๋ฒ์ญ #
template<size_t Nb> class std::bitset< Nb >
bitset ํด๋์ค๋ ๊ณ ์ ํฌ๊ธฐ์ ๋นํธ ๋ฐฐ์ด์ ๋ํ๋ด๋๋ฐ ์ฌ์ฉํฉ๋๋ค. (bitset์ ์ ํ์ ์ธ ์ปจํ
์ด๋์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ์ง ๋ชปํ๋ค๋ ๊ฒ์ ์ฃผ์ํ์๊ธฐ ๋ฐ๋๋๋ค. ๋ํ์ ์ผ๋ก, ์ด ํด๋์ค๋ ๋ฐ๋ณต์๊ฐ ์์ต๋๋ค.)
ํ
ํ๋ฆฟ ๋งค๊ฐ๋ณ์ Nb๋ 0๊ณผ ์์๋ก๋ง ์ง์ ํด์ผํ๋ฉฐ, ๋นํธ์ ๊ฐ์(์๋ฅผ ๋ค๋ฉด, "0", "12", "1024*1024")๋ฅผ ์๋ฏธํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ต์ ํ๋์ด์์ง ์์ ๊ฒฝ์ฐํ์์๋ ์ ์ฅ๊ณต๊ฐ์ word๋จ์์ ๋ธ๋ญ๋ด์ ํ ๋น๋ฉ๋๋ค. B๊ฐ word๋ด์ ๋นํธ์๋ผ๊ณ ๊ฐ์ ํ๋ฉด, (Nb+(B-1))/B word๋งํผ์ ๊ณต๊ฐ์ด ์ ์ฅํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. B - Nb%B ๋นํธ๋ ์ฌ์ฉ๋์ง ์๊ฒ ๋ฉ๋๋ค. (์ต์์ word์์ ์์ ๋นํธ๋ถ๋ถ์ด ๋ฉ๋๋ค) It is a class invariant that those unused bits are always zero.
๋ง์ฝ ์ฌ๋ฌ๋ถ์ด bitset์ "๋จ์ํ ๋นํธ์ ๋ฐฐ์ด"๋ก์ ์๊ฐํ๊ณ ์๋ค๋ฉด, ๋จธ๋ฆฟ์์ ๊ทธ๋ฆผ์ด ๋ค์ง์ด์ ธ ์๋ค๋ ๊ฒ์ ์์๋์ด์ผํฉ๋๋ค: bitset์ ์ ์๊ฐ๋ด์์์ ๋นํธ๋ค๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์
๋๋ค - 0๋ฒ ๋นํธ๋ "์ตํ์/์ค๋ฅธ์ชฝ"์์น์ ์์นํ๋ฉฐ, Nb-1๋ฒ ๋นํธ๋ "์ต์์/์ผ์ชฝ"์์น์ ์์นํฉ๋๋ค. ๋ฐ๋ผ์, ๋ค๋ฅธ ์ปจํ
์ด๋์๋ ๋ฌ๋ฆฌ, bitset์ ์ธ๋ฑ์ค๋ ์ ๋๋ ๋ฐฉ๋ฒ์ ์๋์ง๋ง "์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์
๋๋ค"
This behavior is preserved when translating to and from strings. ์๋ฅผ ๋ค์ด, ๋ค์ ํ๋ก๊ทธ๋จ ๊ฒฐ๊ณผ์ ์ฒซ๋ฒ์งธ ์ค์ ์ผ๋ฐ์ ์ธ ASCII ์ถ๋ ฅ์ผ๋ก "b('a') is 0001100001"์ ์ธ์ํ๊ฒ ๋ฉ๋๋ค.
#include <bitset>
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
long a = 'a';
bitset<10> b(a);
cout << "b('a') is " << b << endl;
ostringstream s;
s << b;
string str = s.str();
cout << "index 3 in the string is " << str[3] << " but\n"
<< "index 3 in the bitset is " << b[3] << endl;
}








![[http]](/wiki/imgs/http.png)
