Notice
Recent Posts
Recent Comments
Link
ยซ   2025/07   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
Tags
more
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

KH_C++

๋น„ํŠธ ์—ฐ์‚ฐ์ž, ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž ๋ณธ๋ฌธ

C++

๋น„ํŠธ ์—ฐ์‚ฐ์ž, ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž

kanghou 2022. 12. 14. 18:19

๐ŸŽˆ ๋น„ํŠธ ์—ฐ์‚ฐ์ž(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
    */
}

 

Comments