E D R S I H C RSS
ID
Password
Join
๋งค์ˆœ๊ฐ„์„ ์ž˜ ๊ฐ์‹œํ•˜๋ผ. ์ด๋Š” ์ œ๊ฐ€ ๊ฐ€์ ธ์˜จ ๊ฒƒ๋ณด๋‹ค ๋งŽ์€ ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์‚ด๊ธˆ์‚ด๊ธˆ ๋น ์ ธ ๋‹ฌ์•„๋‚˜๋Š” ๋„๋‘‘๊ณผ ๊ฐ™์€ ๊ฒƒ. โ€•์กด ์—…๋‹ค์ดํฌ(็พŽ ์ž‘๊ฐ€, 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;
}

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-10-28 12:42:52
Processing time 0.0421 sec