byte = 8bit
1bit = 0 or 1(2진수 1자리)
"&&" : and
"||" : or
"&" : and(bit 단위)
-> 특정 비트를 추출할 때, 0으로 만들 때
"|" : or(bit 단위)
-> 특정 비트를 1로 만들 때
"^" : xor(두 수에서 다른 bit는 1 같은 bit는 0)
-> 1인 부분은 반대, 0인 부분은 원본(반전)
"<<" : a<<b a를 b만큼 bit를 옮겨준다
">>" : a>>b a를 b만큼 bit를 옮겨준다
밀어버릴 때 주의할점
5(101) & 3(011) = 001(1)
10(1010) | 12(1100) = 1110(14)
10(1010) ^ 12(1100) = 0110(6)
a ^ b ^ c ^ b ^ c = a
같은 것끼리는 사라진다(교환법칙O)
특정 자리에 bit가 몇번 존재하는지 확인하는 예제
int test = 351840;
int temp = test;
int cnt = 0;
while (temp) {
if (temp & 1) { // 1의 자리에 bit가 존재하냐?
// (temp & 0b11) == 0b11 // 11이 연속한게 존재하냐?
cnt++;
}
temp >> 1; // 오른쪽으로 이동
}
return 0;
헉~~ 대단하세요!!