๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/Note

๋น„ํŠธ๋งˆ์Šคํฌ(BitMask)

by ์•ˆ์ฃผํ˜• 2022. 9. 16.

๋น„ํŠธ๋งˆ์Šคํฌ(BitMask)

๋น„ํŠธ๋Š” ์ปดํ“จํ„ฐ์—์„œ ๋‹ค๋ฃจ๋Š” ์ตœ์†Œ ๋‹จ์œ„์ด๋ฉฐ, ์ •์ˆ˜๋ฅผ ์ด์ง„์ˆ˜(0, 1)๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„ํŠธ์˜ ํŠน์„ฑ์„ ์ด์šฉํ•œ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๊ธฐ๋ฒ•์„ ๋น„ํŠธ๋งˆ์Šคํฌ(BitMask)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด์ง„์ˆ˜๋Š” 0 ๋˜๋Š” 1์„ ์ด์šฉํ•˜๋ฏ€๋กœ ํ•˜๋‚˜์˜ ๋น„ํŠธ(bit)๊ฐ€ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

๋ณดํ†ต ์–ด๋–ค ๋น„ํŠธ๊ฐ€ 1์ด๋ฉด ์ „๊ตฌ๊ฐ€ "์ผœ์ ธ ์žˆ๋‹ค", 0์ด๋ฉด "๊บผ์ ธ ์žˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋ฉฐ, ์ „๊ตฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•„๋ž˜์ฒ˜๋Ÿผ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์‹œ๋Š” ๋ชจ๋‘ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ์˜์ž์— ์•‰์œผ๋ฉด 1, ์„œ์žˆ์œผ๋ฉด 0
  • ๋‚จ์ž๋ฉด 1, ์—ฌ์ž๋ฉด 0
  • ์ •๋‹ต์ด๋ฉด 1, ์˜ค๋‹ต์ด๋ฉด 0 

 

์‚ฌ์šฉ ์ด์œ 

๋น„ํŠธ๋งˆ์Šคํฌ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํฐ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๋น ๋ฅด๋‹ค.
  2. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ๋‹ค.

๋น„ํŠธ๋งˆ์Šคํฌ ์—ฐ์‚ฐ์€ bit ์—ฐ์‚ฐ์ด๊ธฐ์— O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ข…์ข… ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค ๋ณด๋ฉด ๋น„ํŠธ๋งˆ์Šคํ‚น ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์‹œ๊ฐ„ ๋‚ด์— ํ’€์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๋น„ํŠธ๋งˆ์Šคํ‚น์„ ํ™œ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. https://www.acmicpc.net/problem/15787
  2. https://www.acmicpc.net/problem/2098
  3. https://www.acmicpc.net/problem/1562

 

๋น„ํŠธ ์—ฐ์‚ฐ์ž

๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ๋น„ํŠธ(bit) ๋‹จ์œ„๋กœ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋น„ํŠธ ๋‹จ์œ„๋กœ ์ „์ฒด ๋น„ํŠธ๋ฅผ ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ฌ ๋•Œ๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

& ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•จ. (๋น„ํŠธ AND ์—ฐ์‚ฐ)
| ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ ์ค‘์—์„œ ํ•˜๋‚˜๋ผ๋„ 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•จ. (๋น„ํŠธ OR ์—ฐ์‚ฐ)
^ ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•จ. (๋น„ํŠธ XOR ์—ฐ์‚ฐ)
~ ๋น„ํŠธ๋ฅผ 1์ด๋ฉด 0์œผ๋กœ, 0์ด๋ฉด 1๋กœ ๋ฐ˜์ „์‹œํ‚ด. (๋น„ํŠธ NOT ์—ฐ์‚ฐ)
<< ์ง€์ •ํ•œ ์ˆ˜๋งŒํผ ๋น„ํŠธ๋“ค์„ ์ „๋ถ€ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ด. (left shift ์—ฐ์‚ฐ)
>> ๋ถ€ํ˜ธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ง€์ •ํ•œ ์ˆ˜๋งŒํผ ๋น„ํŠธ๋ฅผ ์ „๋ถ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ด. (right shift ์—ฐ์‚ฐ)

 

1. ๋‹ค์Œ ๊ทธ๋ฆผ์€ ๋น„ํŠธ AND ์—ฐ์‚ฐ์ž(&)์˜ ๋™์ž‘์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ๋น„ํŠธ AND ์—ฐ์‚ฐ์ž๋Š” ๋Œ€์‘๋˜๋Š” ๋‘ ๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 1์ผ ๋•Œ๋งŒ 1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋Š” ๋ชจ๋‘ 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

AND( & ) ์—ฐ์‚ฐ

2. ๋‹ค์Œ ๊ทธ๋ฆผ์€ ๋น„ํŠธ OR ์—ฐ์‚ฐ์ž(|)์˜ ๋™์ž‘์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ๋น„ํŠธ OR ์—ฐ์‚ฐ์ž๋Š” ๋Œ€์‘๋˜๋Š” ๋‘ ๋น„ํŠธ ์ค‘ ํ•˜๋‚˜๋ผ๋„ 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๋‘ ๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 0์ผ ๋•Œ๋งŒ 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

OR ( I ) ์—ฐ์‚ฐ

3. ๋‹ค์Œ ๊ทธ๋ฆผ์€ ๋น„ํŠธ XOR ์—ฐ์‚ฐ์ž(^)์˜ ๋™์ž‘์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ๋น„ํŠธ XOR ์—ฐ์‚ฐ์ž๋Š” ๋Œ€์‘๋˜๋Š” ๋‘ ๋น„ํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์„œ๋กœ ๊ฐ™์œผ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

XOR ( ^ ) ์—ฐ์‚ฐ

4. ๋‹ค์Œ ๊ทธ๋ฆผ์€ ๋น„ํŠธ NOT ์—ฐ์‚ฐ์ž(~)์˜ ๋™์ž‘์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ๋น„ํŠธ NOT ์—ฐ์‚ฐ์ž๋Š” ํ•ด๋‹น ๋น„ํŠธ๊ฐ€ 1์ด๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , 0์ด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

NOT ( ~ ) ์—ฐ์‚ฐ

5. ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž(<<, >>)์˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

<< ์—ฐ์‚ฐ์ž๋Š” Left Shift๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ๋ชจ๋“  ๋น„ํŠธ๊ฐ€ ์™ผ์ชฝ์œผ๋กœ ์ •ํ•ด์ง„ ์ˆ˜๋งŒํผ ์ด๋™ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. 

A << B ๋ผ๊ณ  ํ‘œ์‹œํ•˜๋ฉฐ, 'A'๋ฅผ ์™ผ์ชฝ์œผ๋กœ 'B' ๋น„ํŠธ๋งŒํผ ์ด๋™ํ•˜๋ผ๋Š” ์˜๋ฏธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

2<<1

>> ์—ฐ์‚ฐ์ž๋Š” Right Shift๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ๋ชจ๋“  ๋น„ํŠธ๊ฐ€ ์šฐ์ธก์œผ๋กœ ์ •ํ•ด์ง„ ์ˆ˜๋งŒํผ ์ด๋™ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

A >> B ๋ผ๊ณ  ํ‘œ์‹œํ•˜๋ฉฐ, 'A'๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ 'B' ๋น„ํŠธ๋งŒํผ ์ด๋™ํ•˜๋ผ๋Š” ์˜๋ฏธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

16 >> 1

 

 

์ฐธ๊ณ 

 

7ํŽธ. ์—ฐ์‚ฐ์ž (2)

๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ ๋‹จํ•ญ, ์ดํ•ญ, ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ๋‹จํ•ญ ์—ฐ์‚ฐ์ž(unary operator)๋ž€ ํ•˜๋‚˜์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๊ฐ–๋Š” ์—ฐ์‚ฐ์ž๋“ค์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์—๋Š” ๋ถ€ํ˜ธ ์—ฐ์‚ฐ์ž, ์ฆ๊ฐ ์—ฐ์‚ฐ์ž ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ดํ•ญ ์—ฐ์‚ฐ์ž(b

blog.hexabrain.net

 

์ฝ”๋”ฉ๊ต์œก ํ‹ฐ์”จํ”ผ์Šค์ฟจ

4์ฐจ์‚ฐ์—…ํ˜๋ช…, ์ฝ”๋”ฉ๊ต์œก, ์†Œํ”„ํŠธ์›จ์–ด๊ต์œก, ์ฝ”๋”ฉ๊ธฐ์ดˆ, SW์ฝ”๋”ฉ, ๊ธฐ์ดˆ์ฝ”๋”ฉ๋ถ€ํ„ฐ ์ž๋ฐ” ํŒŒ์ด์ฌ ๋“ฑ

tcpschool.com

 

๋น„ํŠธ๋งˆ์Šคํฌ (BitMask) ์•Œ๊ณ ๋ฆฌ์ฆ˜

[๋ชฉ์ฐจ] 1. ๋น„ํŠธ๋งˆ์Šคํฌ(BitMask)๋ž€? 2. ๋น„ํŠธ๋งˆ์Šคํฌ์˜ ์žฅ์  3. ๋น„ํŠธ ์—ฐ์‚ฐ์ž 4. ๋น„ํŠธ๋งˆ์Šคํฌ๋ฅผ ์ด์šฉํ•œ ์ง‘ํ•ฉ ๊ตฌํ˜„ * ์ข…๋งŒ๋ถ์— ์ž˜ ์„ค๋ช…๋˜์–ด ์žˆ์–ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ข…๋งŒ๋ถ์˜ ์„ค๋ช…์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. 1. ๋น„ํŠธ๋งˆ์Šคํฌ(BitMask)

rebro.kr

๋Œ“๊ธ€