공부/Algorithm

비트마스크 사용해보기 (Java)

Egomi 2017. 10. 17. 16:45

A B C D 를 선택할 수 있는 경우의 수를 구할 때, 0000 0001 0010 0011 0100 ... 식으로 0000에 1씩 더해주면 구할 수 있다.

따라서 총 선택 갯수는 2^4(아무것도 선택하지 않는 경우 포함) 이다.

그리고 경우를 선택한 경우 각 bit가 0인지 1인지 판단하기 위하여 0001을 left로 1bit씩 4번 shift 해준 후 & 연산을 해준다.(비트마스크 사용)

예를 들어, 0011 의 경우 각 bit가 0인지 1인지 판단하기 위하여

0011 & 0001 -> 0001 (1)

0011 & 0010 -> 0010 (2)

0011 & 0100 -> 0000 (0)

0011 & 1000 -> 0000 (0)

으로 결과가 0이 아닐 경우, ON(1)임을 판단할 수 있다.

<코드>

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
32

import java.util.Scanner;
 
class Solution {
 
    public static void main(String[] args){
        byte bitMask = 0x00;
        char[] test = {'A','B','C','D'};
        
        for(int i=0;i<Math.pow(24);i++){
            for(int idx=0;idx<9;idx++){
                
                if((bitMask & (1<<idx))!=0)
                {
                    System.out.print(test[idx]);
                }
            }
            
            System.out.println("");
            bitMask+=0x01;
        }
    }
 
}
    
cs

<결과>

실행 결과