Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 숫자의 가장 오른쪽 설정된 비트를 지우는 방법

이전에 설정된(set) 숫자의 가장 오른쪽 비트를 지워야 할 때는 '&'(비트 AND) 연산자를 활용할 수 있습니다.

핵심 원리는 간단합니다. 어떤 수에서 1을 빼면 가장 오른쪽에 설정된 비트가 0으로 바뀌고, 그보다 낮은 자리의 비트들은 모두 1로 바뀝니다. 따라서 원래 수와 (원래 수 − 1)을 AND 연산하면 가장 오른쪽 설정된 비트만 깔끔하게 제거할 수 있습니다.

예제

def clear_right_bit(my_val):
    return my_val & (my_val-1)
n_val = 6
print("n의 값 :")
print(n_val)
print("가장 오른쪽 설정된 비트를 해제한 후의 값")
print(clear_right_bit(n_val))

출력

n의 값 :
6
가장 오른쪽 설정된 비트를 해제한 후의 값
4

동작 원리 설명

  • 정수를 매개변수로 받는 함수 clear_right_bit가 정의됩니다.

  • 함수 내부에서는 입력값과 (입력값 − 1) 사이의 '&' 연산을 수행한 뒤 그 결과를 반환합니다.

  • 예를 들어 6은 이진수로 110, 5는 101입니다. 두 수를 AND 연산하면 100, 즉 4가 되어 가장 오른쪽의 1비트가 제거됩니다.

  • 함수 외부에서 정수 변수를 정의한 뒤, 그 값을 인자로 전달하여 함수를 호출합니다.

  • 연산 결과가 콘솔에 출력됩니다.