2019. 5. 10. 02:56ใPROGRAMMING/C & C++
๋นํธ ๋จ์ ์ฐ์ฐ์ ์ฃผ๋ก ํ๋์จ์ด ๊ด๋ จ ํ๋ก๊ทธ๋๋ฐ์ ํ์ฉ๋์ง๋ง,
๊ทธ ์ธ์ ์์ญ์์๋
๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํจ์จ์ฑ์ ๋์ด๊ณ ,
์ฐ์ฐ์ ์๋ฅผ ์ค์ด๋ ์ธก๋ฉด ๋๋ฌธ์ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค.
1. ๋นํธ ์ฐ์ฐ์
๋นํธ ์ฐ์ฐ์๋ ์ ์ ์๋ฃํ๋ง ์ทจ๊ธํฉ๋๋ค.
๋นํธ ์ฐ์ฌ์์ ์ข ๋ฅ๋
๋นํธ๋จ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์, ๋นํธ๋จ์ ์ํํธ ์ฐ์ฐ์ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
2. ๋นํธ๋จ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์
๋นํธ๋จ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์์๋ ์ด 4๊ฐ์ง๊ฐ ์์ต๋๋ค.
& (and), | (or), ~ (not), ^ (xor)
1. ๋นํธ๋จ์ & (and) ์ฐ์ฐ์
๋น๊ตํ๋ ๋ ๋นํธ์ด์ ๊ฐ์ด ๋ชจ๋ 1์ผ ๋ ๊ฒฐ๊ณผ๋ 1,
ํ๋๋ผ๋ 0์ด๋ผ๋ฉด ๊ฒฐ๊ณผ๋ 0์ ๋๋ค.
์ ์ 35์ 67์ & ๋นํธ ์ฐ์ฐํด๋ณด๊ฒ ์ต๋๋ค.
0010 0011 (2) 10์ง์ 35
0100 0011 (2) 10์ง์ 67
--------------------------------
0000 0011 (2) 10์ง์ 3
2. ๋นํธ๋จ์ | (or) ์ฐ์ฐ์
๋น๊ตํ๋ ๋ ๋นํธ์ด์ ๊ฐ์ด ํ๋๋ผ๋ 1์ด๋ฉด ๊ฒฐ๊ณผ๋ 1,
๋ ๋ค 0์ด๋ฉด ๊ฒฐ๊ณผ๋ 0์ ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ 35์ 67์ | ๋นํธ ์ฐ์ฐํด๋ณด๊ฒ ์ต๋๋ค.
0010 0011 (2) 10์ง์ 35
0100 0011 (2) 10์ง์ 67
--------------------------------
0110 0011 (2) 10์ง์ 99
3. ๋นํธ๋จ์ ~ (not) ์ฐ์ฐ์
ํผ ์ฐ์ฐ์์ ๋ชจ๋ ๋นํธ์ด์ ๋ฐ์ ์ํต๋๋ค.
0111 1111 (2) 10์ง์ 127
---------------------------------
1000 0000(2) 10์ง์ -128
์์ ํฌ์คํ ์์ ๋งจ ์ผ์ชฝ ์ด์ ๋ถํธ ๋นํธ๋ฅผ ์๋ฏธํ๋ค๊ณ ํ์ต๋๋ค.
๋ฐ๋ผ์ 1000 0000 (2)์ 10์ง์ -128์ ๋นํธ์ด์ ๋๋ค.
์ด์ ํฌ์คํ ์์ 2์ ๋ณด์๋ฒ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์
๋ชจ๋ ๋นํธ์ด์ ๋ฐ์ ์ํจ ํ, 1์ ๋ํ๋ค ๋ผ๋ ๊ฒ์ ์์์ต๋๋ค.
์ฆ, ๋ชจ๋ ๋นํธ์ด์ ๋ฐ์ ์ํค๋
๋นํธ๋จ์ ~ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ฉด ์ฝ๊ฒ 2์ ๋ณด์๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
ex) 10์ง์ 25์ 2์ ๋ณด์๋ฅผ ๊ตฌํ๋ ์
2์ ๋ณด์ = ~25 +1
4. ๋นํธ๋จ์ ^ (xor) ์ฐ์ฐ์
๋น๊ตํ๋ ๋ ๋นํธ์ด์ด ๊ฐ์ผ๋ฉด 0,
๋ค๋ฅด๋ฉด ๊ฒฐ๊ณผ๊ฐ์ 1์ ๋๋ค.
์ ์ 35์ 67์ xor๋นํธ ์ฐ์ฐํด๋ณด๊ฒ ์ต๋๋ค.
0010 0011 (2) 10์ง์ 35
0100 0011 (2) 10์ง์ 67
-------------------------------------
0110 0000 (2) 10์ง์ 96
2. ๋นํธ๋จ์ ์ํํธ ์ฐ์ฐ์
๋นํธ๋จ์ ์ํํธ ์ฐ์ฐ์๋ << (์ข์ธก ์ํํธ), >> (์ฐ์ธก ์ํํธ) ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
1. << (์ข์ธก ์ํํธ) ์ฐ์ฐ์
ํผ์ฐ์ฐ์์ ๋ชจ๋ ๋นํธ์ด์ ์ข์ธก์ผ๋ก ์ด๋์ํต๋๋ค.
์๋ฅผ ๋ค์ด 10 << 2๋
10์ ๋ชจ๋ ๋นํธ์ด์ 2๋งํผ ์ข์ธก์ผ๋ก ์ด๋์ํค๋ ์์ ๋๋ค.
0000 1010 (2) 10์ง์ 10
----------------------------------
0010 1000 (2) 10์ง์ 40
2์ง์๋ ์ข์ธก์ผ๋ก ๊ฐ์๋ก 2์ n์น๋งํผ ์๊ฐ ์ปค์ง๋ฏ๋ก
X << n๋
x * 2^n์ด๋ผ๋ ๊ฒฐ๊ณผ ์์ ๋์ถ ํ ์ ์์ต๋๋ค.
8 << 3 -> 64 ( 8 * 2^3 )
3. >> (์ฐ์ธก ์ํํธ) ์ฐ์ฐ์
์ข์ธก ์ํํธ ์ฐ์ฐ์์๋ ๋ฐ๋๋ก
ํผ์ฐ์ฐ์์ ๋ชจ๋ ๋นํธ์ด์ ์ฐ์ธก์ผ๋ก ์ด๋์ํต๋๋ค.
์๋ฅผ ๋ค์ด 10 << 2๋
10์ ๋ชจ๋ ๋นํธ์ด์ 2๋งํผ ์ฐ์ธก์ผ๋ก ์ด๋์ํค๋ ์์ ๋๋ค.
0000 1010 (2) 10์ง์ 10
----------------------------------
0000 0010 (2) 10์ง์ 2
์ฐ์ธก์ผ๋ก ๋์ด๊ฐ๋ ๋นํธ์ด์ ์ฌ๋ผ์ง๋๋ค.
์ฐ์ธก์ผ๋ก ๋นํธ๋ฅผ ์ด๋ํ ์๋ก 2์ n์น๋งํผ ์์์ง๋ฏ๋ก,
X >> n๋
x / 2^n์ด๋ผ๋ ๊ฒฐ๊ณผ ์์ ๋์ถํ ์ ์์ต๋๋ค.
16 >> 2 -> 4 ( 16 * 2^2 )
๊ฒ์์ ๋ง๋ค ๋ ๋นํธ ์ฐ์ฐ์์ ํ์ฉ์
์ฐจํ ํฌ์คํ ์์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค.
'PROGRAMMING > C & C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
6. [C์ธ์ด] ํฌ์ธํฐ ์ดํดํ๊ธฐ (0) | 2019.05.15 |
---|---|
5. [C์ธ์ด] ํจ์ ์ดํดํ๊ธฐ (0) | 2019.05.14 |
3. [C์ธ์ด] ์์ ์ ์ ํํ. (2์ ๋ณด์) (3) | 2019.05.09 |
2. [C์ธ์ด] ๋ฐ์ดํฐ์ ํํ ๋ฐฉ์ - 2์ง์์ 16์ง์ / ๋นํธ์ ๋ฐ์ดํธ (0) | 2019.05.08 |
1. [C์ธ์ด] ํ๋ก๊ทธ๋จ ๋น๋ ๊ณผ์ ( ์คํํ์ผ(. exe) ์์ฑ ๊ณผ์ ) (1) | 2019.05.07 |