개발/Java

1의 개수가 하나 이상인지 여부를 체크하는 비트연산

haloper 2016. 2. 22. 10:06

비트연산을 처리하는 중에 1의 개수가 하나인지 여부를 확인해야 할 경우가 있었습니다.

비트 수 만큼 루프를 돌면서 카운트를 하는 방법도 있겠지만,

왠지 간단한 연산만으로 처리가 가능할 것 같았고,

고민 끝에 아래 와 같은 방법으로 처리가 가능하다는걸 알게 되었습니다.

public boolean isOneBitEnable(int value) {
    return (Math.log(value) / Math.log(2)) != (int)(Math.log(value) / Math.log(2));
}