Bit Operation
Last updated
Last updated
์ญ์ง์ ๋ง์ ๊ณผ ๊ฐ์ง๋ง, 2๊ฐ ๋์ด๊ฐ ๊ฒฝ์ฐ, ์์๋ฆฌ๋ก +1 ๋๋ค.
์ญ์ ์ญ์ง์ ๋บ์๊ณผ ์ ์ฌํ๋ค. ๋ถ์กฑํ ๊ฒฝ์ฐ, ์์๋ฆฌ์์ ๊ฐ์ ธ์จ๋ค.
์ญ์ง์ ๊ณฑ์ ๊ณผ ๋น์ทํ๋ค. ์๋ฆฌ์๋ณ๋ก ํด์ฃผ๋ฉด ๋๋ค.
1*1์ผ ๋๋ง 1์ด๋๊ณ , ๋๋จธ์ง ๊ฒฝ์ฐ๋ ๋ชจ๋ 0์ด ๋๋ค.
๋ ๋ค 0์ด๋ฉด 0์ด๊ณ , ๋ ์ค ํ๋๋ผ๋ 1์ด๋ฉด 1์ด ๋๋ค.
XXXX | 0000 = XXXX
XXXX | 1111 = 1111
XXXX | XXXX = XXXX
๋๊ฐ ๋ชจ๋ 1์ด๋ฉด 1, ๋๋จธ์ง ๊ฒฝ์ฐ๋ ๋ชจ๋ 0 ์ด๋ค.
0011 & 0101 = 0001
XXXX & 0000 = 0000
XXXX & 1111 = XXXX
XXXX & XXXX = XXXX
๊ฐ ์๋ฆฌ ์์ ๋ฐ๋ ์๋ฅผ ํํํ๋ค.
~ 0101 = 1010
๋ ๊ฐ๊ฐ ๊ฐ๋ค๋ฉด 0, ๋ค๋ฅด๋ฉด 1๋ก ํํํ๋ค.
XXXX ^ 0000 = XXXX
XXXX ^ 1111 = ~XXXX
XXXX ^ XXXX = 0000
์ผ์ชฝ์ผ๋ก 2์นธ ์ด๋ : 1001 << 2 = 100100
์ค๋ฅธ์ชฝ์ผ๋ก 2์นธ ์ด๋ : 1001 >> 2 = 10
Logical Right Shift (๋ถํธ ๋ฌด์) :
Arithmatic Right Shift (๋ถํธ ๊ณ ๋ ค)
9๋ฅผ ์ด์ง์๋ก ํํํ๋ฉด, 1001
3๋ฒ์งธ ์ธ๋ฑ์ค๋ 1 ์ด๋ค.
์ด๋ฅผ ๊ตฌํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ ์ฐ์ฐ์ ํด์ผํ๋ค.
๋จผ์ , 9์์ 3๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ์ ์ธํ๊ณ ๋๋จธ์ง ์ซ์๋ฅผ ๋ ๋ฆด ์ ์๋ ์๋ฅผ ๊ตฌํ๋ค.
๋ค์ ๋งํ์๋ฉด, 1001 ์์ ์ธ๋ฒ์งธ ์ธ๋ฑ์ค ์์ธ 1์ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ ๋๋จธ์ง๋ ๋ค 0์ผ๋ก ๋ง๋ค์ด์ผ ํ๋ค.
์ฆ, 1001 ? XXXX = 1000 ์ด๋ ๊ฒ ๋์ด์ผ ํ๋ ์ XXXX์ ์ฐ์ฐ ? ๋ฅผ ๊ตฌํด์ผํ๋ค.
๋ต์ & 1000 ์ด๋ค. 1001 & 1000 = 1000 ์ด๋ฏ๋ก.
์ด์ 1000 ๋นํธ๊ฐ์ ๋ง๋ค์ด์ฃผ๊ธฐ ์ํด์ ์ฐ์ฐ์ ๋ง๋ค๋ฉด, ๋ฐ๋ก 1 << 3 ์ด ๋๋ค.
์ฝ๋๋ก ํํํ๋ฉด ์๋์ ๊ฐ๋ค.