Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python Count는 범위의 비트를 설정합니까?

<시간/>

바이너리로 변환할 때 주어진 양수에는 많은 세트비트가 있습니다. 2진수의 세트 비트는 1로 표시됩니다. 이 기사에서는 주어진 숫자를 2진 값으로 변환한 후 세트비트 수를 얻는 방법을 살펴보겠습니다.

빈 및 슬라이싱 사용

아래 예에서 우리는 숫자를 취하고 bin 함수를 적용하여 이진 값을 얻습니다. 그런 다음 2진수에 추가된 접두사를 제거하기 위해 슬라이스한 다음 범위 함수를 적용하여 세트비트 수를 가져옵니다.

예시

def SetBits_cnt(n, l, r):bin_val =bin(n) # bin_val 변환에서 접두사 '0b' 제거 bin_val =bin_val[2:] print(bin_val) # 역 문자열 bin_val =bin_val[-1::-1] # 인덱스 l-1에서 시작하여 모든 세트 비트 '1'을 계산합니다. print(len([bin_val[i] for i in range(l - 1, r) if bin_val[i] =='1'])) SetBits_cnt(83,1,6)

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

10100113

비트 단위 사용

비트 연산자를 사용하여 세트비트를 얻을 수도 있습니다. 아래 예제에서는 먼저 범위를 고려한 비트 연산자를 적용한 다음 설정된 비트만 계산하는 다른 함수에 전달합니다.

예시

def trackBitsInRange(n, l, r):# 비트 연산자 사용 bit_num =((1 < 

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

3