์ค๋์ ๋นํธ์ฐ์ฐ์์ ๋ํด ์ด์ผ๊ธฐ๋ฅผ ํ ๊น ํฉ๋๋ค. ๋นํธ์ฐ์ฐ์๋ ๋ง ๊ทธ๋๋ก ๋นํธ ๋จ์๋ก ์ด๋ค ๋์์ ์ํํ๋ ์ฐ์ฐ์์ ๋๋ค. C์ธ์ด์ ๋ฐ์ดํฐ๋ ๊ณต๊ฐ์ ์๊ฒ๋ 1byte์ ์ ์ฅ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ฑฐ๋ 2byte, 4byte, 8byte ๋ฑ์ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ก ์๋ฃ๋ฅผ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค. ์ฌ๊ธฐ์ 1byte์ 8bit๋ก ๊ตฌ์ฑ๋์ด ์๊ณ ์ด bit๋ฅผ ์กฐ์ํ์ฌ ๋ฐ์ดํฐ์ ๊ฐ์ ๋ณํ์ํค๋ ์ฐ์ฐ์๊ฐ ๋ฐ๋ก ๋นํธ ์ฐ์ฐ์์ ๋๋ค. ๋ง๋ณด๋ค๋ ์ค์ ๋นํธ ์ฐ์ฐ์๋ฅผ ์คํ ์์ผ์ ๊ทธ ์๋ฏธ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ข๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ค๋ช ์ ์งง๊ฒ ์ฝ๋ฉ์ผ๋ก ๋นํธ ์ฐ์ฐ์์ ์๋ฆฌ๋ฅผ ์์ ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋นํธ ์ฐ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ธํ ๋ณด์๋ฉด ๋ ผ๋ฆฌ์ฐ์ฐ์์์ ๋ดค๋ ๊ธฐํธ๋ค์ ๋ณด์ค ์ ์์ ๊บผ์์. ๋ ผ๋ฆฌ ์ฐ์ฐ์์์ ์๊ธฐํธ์๋๋ฐ ์ฌ๊ธฐ์์๋ ํ๊ฐ์ง๋ฆฌ ๊ธฐํธ๋ค์. ์ฒ๋ฆฌํ๋ ์๋ฏธ๋ ์ ์ฌํฉ๋๋ค. ์๋ฏธ์ ์ผ๋ก ๊ฐ์ด ์ดํดํ์๋ฉด ์ข์ต๋๋ค. ์ฐธ๊ณ ๋ก ๋ ผ๋ฆฌ์ฐ์ฐ์์ ์ง๋ฆฌํ๋ก ์ดํดํ์๋ ๊ฒ์ด ๋ ํธํ์ค๊ฑฐ์์.
์) a=2, b=3
0010 & 0011 = 0010
0010 | 0011 = 0011
0010 ^ 0011 = 0001
์ด๋ค ๋๋์ด์ ์ง ์์๊ฒ ์ง์.
~์ 1์ ๋ณด์์ด๊ณ <<, >> ์ ๋นํธ ์ด๋์ ๋๋ค. ~์ ๊ฐ์ 1์๋ณด์๋ฅผ ์ทจํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ณ๋๋ก ์ค๋ช ์ ํ์ ์๊ณ ๊ทธ์ธ <<, >> ๋ถํธ์ ๋ํ ์ค๋ช ์ด ํ์ ํฉ๋๋ค.
<<, >>์ ์ํํธ ์ฐ์ฐ์๋ก์ ๊ธฐํธ์ ๋ฐฉํฅ์ ์ ๋ณด์๋ฉด ๋ฉ๋๋ค. ํ์ดํ ๋ชจ์์ฒ๋ผ ๊ฐ๋ฆฌํค๋ ๋ฐฉํฅ์ผ๋ก ๋นํธ๋ ์ ํด์ง n๋งํผ ์ด๋์ํค๋ผ๋ ๋ช ๋ น์ ๋๋ค.
2<<1์ 0010์ 1๋นํธ์ฉ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ผ?
0010 => 0100 => 4
2>>1์ 0010์ 1๋นํธ์ฉ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ผ?
0010 => 0001 => 1
์ด๋ค ๋๋์ธ์ง ์์๊ฒ ์ง์.
๊ทธ๋ฌ๋ฉด 3์ผ๋๋ ์ด๋ป๊ฒ ์ค๋ฅธ์ชฝ์ผ๋ก 1๋นํธ์ฉ ์ด๋ํ๋ค๋ฉด ๋์ด๊ฐ๋ ๋นํธ๋ ์ด๋ป๊ฒ ๋๋์ง ๊ถ๊ธํด ํ์ค ์ ์์ต๋๋ค.
0011 => 0001 => 1
์ด๋ ๊ฒ ๋์ด๊ฐ 1์ ๊ทธ๋ฅ ์ฌ๋ผ์ง๋๋ค. ์งค๋ฆฐ๋ค๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
์ด์ ์์์ ์ค๋ช ํ ๊ฒ๋ค์ด ์ ์์ ์ผ๋ก ๋์ํ๋์ง ์ฝ๋ฉ์ ์คํ ์์ผ๋ด์ผ ๊ฒ ์ฃ .
[์์ค]
#include
int main(int argc, char *argv[]) {
int a=2, b=3;
printf("%d & %d = %d \n",a,b,a&b);
printf("%d | %d = %d \n",a,b,a|b);
printf("%d ^ %d = %d \n",a,b,a^b);
printf("~%d = %d \n",a,~a);
printf("%d<<1 = %d \n",a,a>>1);
printf("%d>>1 = %d \n",a,a<<1);
return 0;
}
[๊ฒฐ๊ณผ]
๊ฒฐ๊ณผ๋ ์ ์ํํ๋ก ๋์์ ๋นํธ ์ ํํ ์ด๋ป๊ฒ ์ฒ๋ฆฌ ๋์๋์ง๋ ์ฝ๊ฐ ์ดํด๊ฐ ์ ๊ฐ ์ ์์ต๋๋ค. ํด๋น ์ ์๋ฅผ 2์ง์ ํํ๋ก ๋ณํํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋์๋์ง ํ์ธ ํ ์ ์์ต๋๋ค. 2์ง์๋ณํ์ ํ์๋ฉด ๋๋๊น ๊ฒฐ๊ณผ๋ค์ ๋ฉ๋ชจ์ฅ์๋ค ์ ๋ถ 2์ง์๋ณํํ์๊ณ ์คํํ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ์๋ฉด์ ์ ์์ ์ผ๋ก ๋์ํ๋์ง ํ์ธ ํ์๋ฉด ๋ฉ๋๋ค.
์ค๋์ ๋นํธ์ฐ์ฐ์๋ฅผ ํตํด ๋ฐ์ดํฐ ๊ฐ๋ค์ ์กฐ์์ ํด๋ณด์์ต๋๋ค. ์ด ๋ถ๋ถ์ ๋ฑํ ์ด๋ณด๋ถ๋ค์ด ์จ๋จน์ ๊ณณ์ ์์ ๊ฑฐ์์. ๊ทธ๋ฅ ๋นํธ ๊ณ์ฐ์ ์ด๋ฐ์์ผ๋ก ํ๋ค๋ ๊ฒ๋ง ์ดํดํ์๋ฉด ๋ฉ๋๋ค. ๋์ค์ ๋ค๋ฅธ ํน์ ๋ถ์ผ์ ๋นํธ๋ก ๊ณ์ฐ์ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ๋นํธ ๊ณ์ฐ์ด ์ด๋ฐ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค๋ ๊ฒ๋ง ์ดํดํ๊ณ ๋์ด๊ฐ์๊ธฐ ๋ฐ๋๋๋ค. ์ง๊ธ ๋ณต์กํ๊ฒ ๊น๊ฒ ์์ฉํ์ฌ ์จ๋จน์ด์ผ์ง ํ ํ์๊ฐ ์์ต๋๋ค. ๋จ์ํ๊ฒ ์ด๋ฐ ๊ฒ๋ ์๊ตฌ๋ ์ ๋๋ก ์ดํดํ์๊ณ ๋์ด๊ฐ์๋ฉด ๋ฉ๋๋ค.