Computer Science/Algorithm
제곱수, 2의 n 제곱인지 확인
데이터현
2021. 12. 29. 12:34
제곱수인지 확인
def isSquare(n):
return int(n ** 0.5) ** 2 == n
2의 n 제곱인지 확인
def isPowerOf2(n):
return (n&(n-1))==0
2의 제곱은 비트로 나타낼 때 맨 왼쪽 비트만 1이고, n이 2의 제곱이라면 n-1 은 맨 왼쪽 비트가 0이고 그 오른쪽 비트들은 모두 1이게 됨.
따라서 n이 2의 거듭제곱이라면 n과 n-1을 and 연산 했을 때 0이 나오게 됨.