cpp ๋นํธ ์ฐ์ฐ
๋นํธ ์ฐ์ฐ์ ๊ฑฐ์ ๋ชจ๋ lowํ(์๋์ ์ผ๋ก) ์ธ์ด๋ ์ง์ํ๋๋ฐ, ์ค์ ๋ก ์ฌ์ฉํ ๋๋ ์ฝํ ๋ฌธ์ ๋, ์ํ๋ณด๋ ์ํฉ ์ธ์๋ ๊ฑฐ์ ์์๋ค. ๊ฒ์์ ๊ณ๋ ์ง์ง ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ ๊ฐ๋จํ ์์ ๋ฅผ ์ ๋ฆฌํด๋ณด์๋ค.
๋นํธ ์ฐ์ฐ์
&
: AND ์ฐ์ฐ์|
: OR ์ฐ์ฐ์^
: XOR ์ฐ์ฐ์~
: NOT ์ฐ์ฐ์<<
: ์ผ์ชฝ ์ํํธ ์ฐ์ฐ์>>
: ์ค๋ฅธ์ชฝ ์ํํธ ์ฐ์ฐ์
๋นํธ ์ฐ์ฐ ์์
๋นํธ ํ๋๊ทธ ์ฌ์ฉ ์์ ๋นํธ ๋ถํธ๋ฅผ ํ๋๊ทธ๋ก ์ฌ์ฉํ์ฌ, ๊ฒ์๋ด์ ์บ๋ฆญํฐ ์ํ๋ฅผ ํํํ ์ ์๋ค.
0b0000 [๋ฌด์ ][๋ณ์ด][์คํด][๊ณต์ค๋ถ์]
#include <iostream>
using namespace std;
unsigned char flag; // ๋ถํธ ๋นํธ๊ฐ ๋ธ๋ ค์ค๋๊ฑด ์์ฒญ ํท๊ฐ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ณดํต unsigned๋ก ์ ์ธํ๋ค.
flag = (1 << 3); // ๋ฌด์ ํ๋๊ทธ๋ฅผ ์ผ ๋ค.
flag |= (1 << 2); // ๋ณ์ด ํ๋๊ทธ๋ฅผ ์ผ ๋ค(๋ฌด์ + ๋ณ์ด).
// ๋ฌด์ ์ธ์ง ํ์ธํ๊ณ ์ถ๋ค : bitmask
if (flag & (1 << 3) != 0) {
cout << "๋ฌด์ ์ํ์
๋๋ค." << endl;
}
// ๋ฌด์ ์ด๋ ์คํด ์ํ์ธ์ง ํ์ธํ๊ณ ์ถ๋ค : bitmask
bool mask = (1 << 3) | (1 << 2);
if (flag & mask != 0) {
cout << "๋ฌด์ ์ด๋ ์คํด ์ํ์
๋๋ค." << endl;
}