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

주어진 위치에서 'k' 비트를 추출하는 파이썬 프로그램

이 함수는 숫자의 특정 위치(pos)에서 k개의 비트를 추출한 후 그 값을 반환합니다. 구현 과정에서는 파이썬의 문자열 슬라이싱(slicing) 기법을 활용합니다.

예시

입력 :: number=170
   K=5
   Pos=2
출력 = 21

숫자 170을 이진수로 변환하면 10101010입니다. 여기서 오른쪽에서 2번째 위치부터 5개의 비트, 즉 10101을 추출하면, 이를 다시 십진수로 변환한 값인 21이 최종 결과가 됩니다.

알고리즘

Extractionbit(no, k, pos)
/* 사용자가 입력한 숫자는 변수 no에 저장되고, 추출할 비트 개수는 변수 k에, 비트의 위치는 변수 pos에 저장됩니다. */
1단계 : bin() 함수를 사용해 숫자를 이진수 형태로 변환합니다.
2단계 : 변환된 문자열의 맨 앞 두 문자('0b')를 제거합니다.
3단계 : 오른쪽에서 pos번째 위치부터 시작해 k개의 비트를 추출합니다. 이때 추출할 부분 문자열의 끝 인덱스는 e = len(bi) - pos이며, 시작 인덱스는 s = e - k + 1입니다.
4단계 : 해당 범위의 k비트 부분 문자열을 추출합니다.
5단계 : 추출된 부분 문자열을 다시 십진수로 변환합니다.

예제 코드

# 주어진 숫자의 특정 위치에서 'k' 비트를 추출하는 파이썬 프로그램
def extractedbits(no, k, pos):
    bi = bin(no)          # 숫자를 이진수 문자열로 변환
    bi = bi[2:]           # 접두사 '0b' 제거
    e = len(bi) - pos     # 추출 범위의 끝 인덱스
    s = e - k + 1         # 추출 범위의 시작 인덱스
    substr = bi[s : e+1]  # k비트 부분 문자열 추출
    print("FINAL RESULT ::>", int(substr, 2))  # 십진수로 변환해 출력

# 드라이버(메인) 프로그램
if __name__ == "__main__":
    no = int(input("Enter number ::>"))
    k = int(input("Enter k bit's ::>"))
    pos = int(input("Enter position ::>"))
    extractedbits(no, k, pos)

실행 결과

Enter number ::>170
Enter k bit's ::>5
Enter position ::>2
FINAL RESULT ::>21