์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ํฌ๋ฆฝํค
- ์๋์กฐ์ ์ฅ์น
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ ์๋
- ๊ธฐํ์กฐํฉ๋ ผ๋ฆฌํ๋ก
- ํํ์ฑ
- ์ ์ ์คํ
- ์ ํ์ฑ
- ๋ฐ์๋
- ์คํ
- ํ๋ฆฌ์1m๋ง๋๊ธฐ
- p53
- ์ ๋ณด์ฒ๋ฆฌ๊ธฐ๋์
- ์๋ฃ๊ตฌ์ฑ์ ๋จ์
- ์นด๋๋ด์ค
- ์์๋ ผ๋ฆฌํ๋ก
- ๊ฒฝ์
- ์ฒ ํ
- ์กฐํฉ๋ ผ๋ฆฌํ๋ก
- ์ฌ์ดํด๋ฆฐ
- ์ด๊ธฐ์ผ์๋ก
- ๋์ ์คํ
- ์ค์์ด๊ถ์
- ๋ ๋ฒจ0
- ํผํฐ๋ฅด๋ธ๋คผํ
- ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ
- ์ ๋ณด์ฒ๋ฆฌ๊ธฐ๋ฅ์ฌ
- ๋ณด๊ถ์ ๊ฑฐ ์ผ์
- ์๋ฃ๊ตฌ์กฐ
- ์ปดํจํฐ์ ๊ฐ๋
- Today
- Total
0105
์ ๋ณด์ฒ๋ฆฌ๊ธฐ๋ฅ์ฌ 17.์ฐ์ฐ ๋ณธ๋ฌธ
๋นํธ ์ฐ์ฐ์ (Bitwise Operators) ์ ๋ฆฌ
1. AND ์ฐ์ฐ (&) - ๋ง์คํน (Masking)
AND ์ฐ์ฐ์ ํน์ ๋ฌธ์๋ ๋นํธ๋ฅผ ์ญ์ (Clear)ํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๋ง์คํน ์ฐ์ฐ์ด๋ผ๊ณ ๋ ํฉ๋๋ค. ์ญ์ ํ ๋ถ๋ถ์ ๋นํธ๋ฅผ 0๊ณผ AND ์ฐ์ฐํ๋ฉด ํด๋น ๋นํธ๊ฐ 0์ด ๋์ด ์ญ์ ๋ฉ๋๋ค.
์์ :
int a = 0b1101; // 13 (2์ง์)
int mask = 0b1010; // ๋ง์คํฌ ๊ฐ
int result = a & mask; // 0b1000 (8)
2. OR ์ฐ์ฐ (|) - ์ ํ์ ์ธํธ (Selective Set)
OR ์ฐ์ฐ์ ํน์ ๋ฌธ์๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ๋นํธ๋ฅผ 1๋ก ์ค์ (Set)ํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ์ ํ์ ์ธํธ ์ฐ์ฐ์ด๋ผ๊ณ ๋ ํฉ๋๋ค. ์ํ๋ ์์น์ ๋นํธ๋ฅผ 1๋ก ๋ง๋ค๊ธฐ ์ํด OR ์ฐ์ฐ์ ์ํํฉ๋๋ค.
์์ :
int a = 0b1100; // 12
int mask = 0b0011;
int result = a | mask; // 0b1111 (15)
3. XOR ์ฐ์ฐ (^) - ๋น๊ต ๋ฐ ๋ฐ์ (Toggle)
XOR ์ฐ์ฐ์ ๋ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๊ฑฐ๋ ํน์ ๋นํธ๋ฅผ ๋ฐ์ (Toggle)ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ๋น๊ต: XOR ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ 0์ด๋ฉด ๋์ผํ ๋ฐ์ดํฐ, 1์ด ํฌํจ๋์ด ์์ผ๋ฉด ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ์ ๋๋ค.
- ๋นํธ ๋ฐ์ : ํน์ ๋นํธ๋ฅผ ๋ฐ์ ์ํค๋ ค๋ฉด XOR ์ฐ์ฐ์ ์ฌ์ฉํฉ๋๋ค.
์์ :
int a = 0b1101;
int b = 0b1011;
int result = a ^ b; // 0b0110 (6, ์๋ก ๋ค๋ฅธ ๋นํธ ํ์ธ)
// ํน์ ๋นํธ ๋ฐ์
int c = 0b1100;
int toggle_mask = 0b0100;
int toggled = c ^ toggle_mask; // 0b1000 (๋ฐ์ ๋ ๊ฐ)
4. NOT ์ฐ์ฐ (~) - ๋ณด์ (Complement)
NOT ์ฐ์ฐ์ ๊ฐ ๋นํธ๋ฅผ ๋ฐ์ ์์ผ ๋ณด์๋ฅผ ๊ตฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ชจ๋ 0์ 1๋ก, 1์ 0์ผ๋ก ๋ฐ๊ฟ๋๋ค.
์์ :
int a = 0b00001111;
int result = ~a; // 0b11110000 (๋ณด์ ์ฐ์ฐ)
5. ๋นํธ ์ด๋ (Shift & Rotate)
๋ ผ๋ฆฌ ์ํํธ (Logical Shift)
๋ ผ๋ฆฌ ์ํํธ๋ ๋นํธ๋ฅผ ๋จ์ํ ์ผ์ชฝ(<<) ๋๋ ์ค๋ฅธ์ชฝ(>>)์ผ๋ก ์ด๋์ํค๋ฉฐ, ๋น ์๋ฆฌ๋ 0์ผ๋ก ์ฑ์์ง๋๋ค.
์์ :
int a = 0b00001111; // 15
int leftShift = a << 2; // 0b00111100 (60)
int rightShift = a >> 2; // 0b00000011 (3)
์ฐ์ ์ํํธ (Arithmetic Shift)
์ฐ์ ์ํํธ๋ ๋ถํธ ๋นํธ๋ฅผ ์ ์งํ๋ฉด์ ์ด๋ํ๋ ๋ฐฉ์์ผ๋ก, ์ค๋ฅธ์ชฝ ์ํํธ ์ ๋ถํธ ๋นํธ(1 ๋๋ 0)๊ฐ ์ ์ง๋ฉ๋๋ค.
์์ :
int a = -8; // 0b11111000 (8๋นํธ ๊ธฐ์ค)
int arithmeticRightShift = a >> 2; // 0b11111110 (-2)
ํ์ ์ด๋ (Rotate Move)
ํ์ ์ด๋์ ๋นํธ๋ฅผ ์ด๋ํ ํ, ๋ฐ๋ ค๋ ๋นํธ๋ฅผ ๋ฐ๋ํธ ๋์ผ๋ก ๋ค์ ์ฑ์ ๋ฃ๋ ๋ฐฉ์์ ๋๋ค.
์์ :
int a = 0b1101; // 13
int rotateLeft = (a << 1) | (a >> 3); // ์ผ์ชฝ ํ์
int rotateRight = (a >> 1) | (a << 3); // ์ค๋ฅธ์ชฝ ํ์
'๐ ์๊ฒฉ์ฆ > ์ ๋ณด์ฒ๋ฆฌ๊ธฐ๋ฅ์ฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๋ณด์ฒ๋ฆฌ๊ธฐ๋ฅ์ฌ 19. ์ฃผ์์ง์ ๋ฐฉ์ (1) | 2025.03.21 |
---|---|
์ ๋ณด์ฒ๋ฆฌ๊ธฐ๋ฅ์ฌ 18. ๋ช ๋ น์ด ํ์ (0) | 2025.03.21 |
์ ๋ณด์ฒ๋ฆฌ๊ธฐ๋ฅ์ฌ 16. ๋ช ๋ น์ด (1) | 2025.03.20 |
์ ๋ณด์ฒ๋ฆฌ๊ธฐ๋ฅ์ฌ 15. ๊ธฐํ ์๋ฃ์ ํํ ๋ฐฉ์ (0) | 2025.03.20 |
์ ๋ณด์ฒ๋ฆฌ๊ธฐ๋ฅ์ฌ 14. ์๋ฃ์ ์ธ๋ถ์ ํํ (0) | 2025.03.20 |