์๋ ํ์ธ์ :) ์ค๋์ ๋นํธ ์ฐ์ฐ ์ฌ์ฉํ๋ BF ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋นํธ ์ฐ์ฐ์ ์ ์ฌ์ฉํ๋ฉด ์ ์๋ก ์งํฉ์ ํํํ ์ ์์ด, ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ ์ ์๊ฒ๋ฉ๋๋ค. ๊ทธ๋ผ ์ค๋๋ ํ์ดํ ์ ๋๋ค๐ฟ
ํ๋์ ์ ์๋ก ์งํฉ์ ๋ํ๋ด์ด, ์งํฉ ์ฐ์ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋นํธ์ฐ์ฐ์ผ๋ก ์งํฉ ์ฐ์ฐ์ด ๊ฐ๋ฅํ ์ด์ ๋, ์งํฉ์ ์ค๋ณต๋ ์์๊ฐ ์๊ณ , ๊ฐ ์์๋ค์ ๋ํด ์ ๋ฌด์ ์ํ๋ง ํํํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ก ์ด ์งํฉ์ ๊ฐ๋ ์ 2์ง์๋ก ํํํ ๊ฒ์ด ๋นํธ ์ฐ์ฐ์ ํต์ฌ์ ๋๋ค. 0๊ณผ 1์ ๊ฒฝ์ฐ์ ์๋ง ๊ฐ์ง๋ 2์ง์๋ก ์งํฉ์ ์์ ์ ๋ฌด๋ฅผ ๋ํ๋ ๋๋ค. ์ฆ,
์งํฉ์ ๊ฐ ์์ ๊ฐ n โ ๋นํธ์ ์๋ฆฌ ์๋ก ํํ, 2์ง์์ n๋ฒ์งธ ์๋ฆฌ์ 1๋ก ํํ
์งํฉ โ ํ๋์ ์ ์๋ก ํํ, ํด๋น 2์ง์๋ฅผ 10์ง์๋ก ํํํ ๊ฐ
์ผ๋ก ๋ํ๋ด๊ฒ ๋๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ซ์๋ก ์์๋ฅผ ๋ค์ด๋ณด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
{1,3,4,5,9} โ 570 = 2^1 + 2^3 + 2^4 + 2^5 + 2^9
๋ํ, ๋นํธ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ํฌ๊ฒ ๋ฎ์ถ ์ ์์ต๋๋ค.
Nํฌ๊ธฐ์ ์งํฉ S ํํํ๋ ๊ฒฝ์ฐ์ ๊ธฐ์กด ๋ฐฐ์ด๋ก ํํํ๋ ๋ฐฉ์๊ณผ ๋นํธ๋ก ํํํ๋ ๋ฐฉ์์ ๋น๊ตํ๋ค๋ฉด N๋งํผ์ ๊ณต๊ฐ ๋ณต์ก๋ ์ฐจ์ด๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
Nํฌ๊ธฐ์ intํ ๋ฐฐ์ด vs intํ ๋ณ์ ํ๋ โ N๋งํผ์ ๊ณต๊ฐ ๋ณต์ก๋ ์ฐจ์ด
๋ ์๋ฅผ ๋นํธ ์ฐ์ฐ ํ๋ ๊ฒฝ์ฐ์, ๊ฐ์ฅ ๋ค์ ์๋ฆฌ๋ถํฐ ํ๋์ฉ ์ฐ์ฐ์ ์ํํ๋ฉด ๋ฉ๋๋ค.
0011011 & 1010011 = 0010011
0011011 | 1010011 = 1011011
0011011 ^ 1010011 = 1001000
์๋ฃํ์ ๋ฐ๋ผ 2์ง์์ ์๋ฆฌ์๊ฐ ๋ฌ๋ผ์ง๊ณ , ์๋ฆฌ์์ ๋ฐ๋ผ not์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๊ฒ ๋๋ฏ๋ก ์ฃผ์๊ฐ ํ์ํฉ๋๋ค. (int vs longlong)
A = 01010011
~A (8๋นํธ, int) = 10101100
~A (32๋นํธ, longlong) = 11111111 11111111 11111111 10101100
unsigned, signed์ ๋ฐ๋ผ์ ๊ฐ์ด ๋ฌ๋ผ์ง์ง ์์ง๋ง, ๋ณด์ฌ์ง๋ ๊ฐ์ด ๋ฌ๋ผ์ง๋ฏ๋ก ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
A << B : A๋ฅผ ์ผ์ชฝ์ผ๋ก B๋นํธ๋งํผ ๋ฏผ๋ค.
A << B :
1 << 0 = 1
1 << 2 = 4 = 100
A >> B : A๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก B๋นํธ๋งํผ ๋ฏผ๋ค.
A << B :
(a+b)/2 == (a+b)>>1
์งํฉ S์ ์์ a์ ๋ํ์ฌ,
S | (1 << a)
570 | = 570 | (1<<1) = 570 ()
570 | = 570 | (1<<2) = 574 ()
S & ~(1<<a)
a์ ํด๋นํ๋ ์๋ฆฌ์ 0, ๋๋จธ์ง๋ ๋ชจ๋ 1์ ๋ ๊ฒ๊ณผ and ์ฐ์ฐ์ ํฉ๋๋ค.
570 & ~ = 570 & ~(1<<1) = 568 ()
570 & ~ = 570 & ~(1<<2) = 570 ()
S & (1<<a)
์ ์์ ๊ฒฐ๊ณผ๊ฐ 0์ธ์ง ์๋์ง์ ๋ฐ๋ผ, S์ a๊ฐ ์๋์ง ์ ์ ์์ต๋๋ค.
S๊ฐ a๋ฅผ ํฌํจํ์ง ์๋ ๊ฒฝ์ฐ
570 & = 570 & (1<<0) = 0
S๊ฐ a๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ
570 & = 570 & (1<<1) = 2
S ^ (1 << a)
570 ^ = 570 ^ (1<<1) = 568 ()
570 ^ = 570 ^ (1<<2) = 574 ()
(1 << N)-1
0
1 << N - 1์ ์ฐ์ฐ์ ์ฐ์ ์์์ ์ํด 1 << (N-1)๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ฉ๋๋ค. ๋ง์ฝ (1 << N) -1๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์๋ํ๋ค๋ฉด, ๊ดํธ๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค.
์๋ฃํ์ ๋ฐ๋ผ, 2์ง์์ ์๋ฆฌ์๊ฐ ๋ฌ๋ผ์ ธ, ๋นํธ์ฐ์ฐ์ ์ํฅ์ ์ค ์ ์๋ค๋ ์ ์ ๋ช ์ฌํด์ผํฉ๋๋ค.