KH_C++
๋นํธ ์ฐ์ฐ์, ์ํํธ ์ฐ์ฐ์ ๋ณธ๋ฌธ
๐ ๋นํธ ์ฐ์ฐ์(bitwise operator)
๋นํธ ์ฐ์ฐ์๋ ๋นํธ(bit) ๋จ์๋ก ๋ ผ๋ฆฌ ์ฐ์ฐ์ ํ ๋ ์ฌ์ฉํ๋ ์ฐ์ฐ์์ ๋๋ค.
๋ํ, ๋นํธ ๋จ์๋ก ์ ์ฒด ๋นํธ๋ฅผ ์ผ์ชฝ์ด๋ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํฌ ๋๋ ์ฌ์ฉํฉ๋๋ค.
๋นํธ ์ฐ์ฐ์ ์ค๋ช
& | ๋์๋๋ ๋นํธ๊ฐ ๋ชจ๋ 1์ด๋ฉด 1์ ๋ฐํํจ. (๋นํธ AND ์ฐ์ฐ) |
| | ๋์๋๋ ๋นํธ ์ค์์ ํ๋๋ผ๋ 1์ด๋ฉด 1์ ๋ฐํํจ. (๋นํธ OR ์ฐ์ฐ) |
^ | ๋์๋๋ ๋นํธ๊ฐ ์๋ก ๋ค๋ฅด๋ฉด 1์ ๋ฐํํจ. (๋นํธ XOR ์ฐ์ฐ) |
~ | ๋นํธ๋ฅผ 1์ด๋ฉด 0์ผ๋ก, 0์ด๋ฉด 1๋ก ๋ฐ์ ์ํด. (๋นํธ NOT ์ฐ์ฐ) |
<< | ์ง์ ํ ์๋งํผ ๋นํธ๋ค์ ์ ๋ถ ์ผ์ชฝ์ผ๋ก ์ด๋์ํด. (left shift ์ฐ์ฐ) |
>> | ๋ถํธ๋ฅผ ์ ์งํ๋ฉด์ ์ง์ ํ ์๋งํผ ๋นํธ๋ฅผ ์ ๋ถ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํด. (right shift ์ฐ์ฐ) |
๋ค์ ๊ทธ๋ฆผ์ ๋นํธ AND ์ฐ์ฐ์(&)์ ๋์์ ๋ํ๋ ๋๋ค.
์ด์ฒ๋ผ ๋นํธ AND ์ฐ์ฐ์๋ ๋์๋๋ ๋ ๋นํธ๊ฐ ๋ชจ๋ 1์ผ ๋๋ง 1์ ๋ฐํํ๋ฉฐ, ๋ค๋ฅธ ๊ฒฝ์ฐ๋ ๋ชจ๋ 0์ ๋ฐํํฉ๋๋ค.
๋ค์ ๊ทธ๋ฆผ์ ๋นํธ OR ์ฐ์ฐ์(|)์ ๋์์ ๋ํ๋ ๋๋ค.
์ด์ฒ๋ผ ๋นํธ OR ์ฐ์ฐ์๋ ๋์๋๋ ๋ ๋นํธ ์ค ํ๋๋ผ๋ 1์ด๋ฉด 1์ ๋ฐํํ๋ฉฐ, ๋ ๋นํธ๊ฐ ๋ชจ๋ 0์ผ ๋๋ง 0์ ๋ฐํํฉ๋๋ค.
๋ค์ ๊ทธ๋ฆผ์ ๋นํธ XOR ์ฐ์ฐ์(^)์ ๋์์ ๋ํ๋ ๋๋ค.
์ด์ฒ๋ผ ๋นํธ XOR ์ฐ์ฐ์๋ ๋์๋๋ ๋ ๋นํธ๊ฐ ์๋ก ๋ค๋ฅด๋ฉด 1์ ๋ฐํํ๊ณ , ์๋ก ๊ฐ์ผ๋ฉด 0์ ๋ฐํํฉ๋๋ค.
๋ค์ ๊ทธ๋ฆผ์ ๋นํธ NOT ์ฐ์ฐ์(~)์ ๋์์ ๋ํ๋ ๋๋ค.
์ด์ฒ๋ผ ๋นํธ NOT ์ฐ์ฐ์๋ ํด๋น ๋นํธ๊ฐ 1์ด๋ฉด 0์ ๋ฐํํ๊ณ , 0์ด๋ฉด 1์ ๋ฐํํฉ๋๋ค.
๐ ์ผ์ชฝ ์ํํธ ์ฐ์ฐ
์ฝ๊ฒ n ๋งํผ ์ผ์ชฝ์ผ๋ก ์นธ์ ์ด๋์ํค๋ ๊ฒ์ ๋๋ค. ์ด๋์ํจ ์ดํ์ ๋ถ๋ถ์ 0์ผ๋ก ์ฑ์์ง๋๋ค.
10์ง์๋ก ํํํ์๋ฉด 2๋งํผ ๊ณฑํด์ค๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
void main()
{
int number = 5;
int result = number << 1;
// ex 1 = 10
cout << result << endl;
/*
0000 0101
---------
0000 1010
*/
}
|
cs |
๐ ์ค๋ฅธ์ชฝ ์ํํธ ์ฐ์ฐ
์ฝ๊ฒ n ๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ์นธ์ ์ด๋์ํค๋ ๊ฒ์ ๋๋ค. ๋ง์ฝ ์์๋ผ๋ฉด ์ด๋์ํจ ์ดํ์ ๋ถ๋ถ์ 1๋ก ์ฑ์์ง๋๋ค.
10์ง์๋ก ํํํ์๋ฉด 2๋งํผ ๋๋ ์ค๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
void main()
{
int number = 10;
int result = number >> 1;
// ex 1 = 5
cout << result << endl;
/*
0000 1010
---------
0000 0101
*/
}
|
'C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฒกํฐ(Vector) (0) | 2022.12.16 |
---|---|
ํ๋ ฌ(MATRIX) (1) | 2022.12.15 |
์ผ๊ฐ๋น, ์ผ๊ฐํจ์ (0) | 2022.12.07 |
์๋์ฐ ํ๋ก์์ , ์๋์ฐ ๋ฉ์ธ์ง, ๋ฉ์์ง ํ, ๋ฉ์์ง ๋ฃจํ (0) | 2022.12.05 |
ํจ์ ํฌ์ธํฐ(Function Pointer) (0) | 2022.11.30 |