2020년 5월 29일 금요일

비트연산자의 이해


1.bool possi(vector<int> &vec, int now) {
2. for (int i = 0; i < vec.size(); i++)
3. if ((vec[i] & now) == vec[i])
return false;

return true;
}

이거 의미 파악하기

1. 현재의 숫자 now와 vec를 비교하려는것같음
2. 백터에 있는 숫자를 now와 비교하기 위해 for문을 돌리는것
3. vec안에 있는 숫자와 now를 & 연산한다.????

 & 연산 = 두 숫자 모두가 1이라면 1 아니라면 0을 반환

왜 vec[i] == now를 안하고

vec[i]&now == vec[i]를 했을까에 대한 이유를 알아보자




ex) 
vec[i] == now 비교했을때 
0001 == 1010   false
0010 == 1010   false
0011 == 1010   false

vec[i]&now == vec[i] 비교했을때 
vec ->
(0001 & 1010 -> 0000) == 0001    false
(0010 & 1010 -> 0010) == 0010    true
(0011 & 1010 -> 0010) == 0011    false





댓글 없음:

댓글 쓰기

git rejected error(feat. cherry-pick)

 문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...