비트 이동 연산자
비트 논리 연산자
사용되는 이유
배열 [3,4,5,6]이 있을 때 이 배열의 부분집합은
[], [3], [4], [5], [6], [3,4], [3,5] ... [3,4,5,6] 이 된다
이 경우를 인덱스로 표현하여 접근해볼 수 있다.
[3,4,5,6] = 1111
[3,6] = 1001
[3] = 1000
[] = 0000
1111 을 10진수로 변환하면 15. 즉, 0 부터 15까지로 부분집합 표현이 가능하다.
class Main{
static int nums = {1,2,3,4,5};
public static void main(String[] args){
subset();
}
public static subset() {
for(int flag=0; flag<(1<<nums.length); flag++){
for(int i=0; i<nums.length; i++){
if((flag&(1<<i))!=0){
system.out.print(nums[i]+" ");
}
}
System.out.println();
}
}