[C#] 비트연산 Brian Kernighan (1비트 체크)
카테고리: Til
Brian Kernighan
Brian Kernighan
이진수에서 가장 오른쪽에 있는 1비트를 하나 없애는 것.
Brian Kernighan
int n = 12; //string bin = Convert.ToString(n, 2);
int count = 0;
while (n>0)
{
n &= (n - 1);
count++;
}
- 12 (1100)
- 11 (1011) & = 1000(8)
- n-1 는 n에서 가장 오른쪽 1과 그 오른쪽 비트들을 반전시킨다.
- 그러므로 n & n-1 은 가장 오른쪽 1이 사라진 값이 된다.
댓글남기기