공부중

[논리회로] 1의 보수, 2의 보수 변환 파이썬 코드 본문

전자전기/논리회로

[논리회로] 1의 보수, 2의 보수 변환 파이썬 코드

복습 2024. 3. 30. 14:29
728x90

1' COMPLEMENT

2' Complement

 

def complement(r, number):
    # r-1의 보수 계산
    r_minus_1_complement = ''.join(str((r-1) - int(digit)) for digit in number)

    # r의 보수 계산 (r-1의 보수에 1을 더함)
    r_complement = ''
    carry = 1
    for digit in reversed(r_minus_1_complement):
        new_digit = int(digit) + carry
        if new_digit == r:
            carry = 1
            r_complement = '0' + r_complement
        else:
            carry = 0
            r_complement = str(new_digit) + r_complement
    if carry == 1:
        r_complement = '1' + r_complement

    return r_minus_1_complement, r_complement

while(1):
    # 사용자 입력
    r = int(input("진법을 입력하세요 (예: 2, 10): "))
    number = input(f"{r}진수의 숫자를 입력하세요: ")

    # 보수 계산
    r_minus_1_complement, r_complement = complement(r, number)

    # 결과 출력
    print(f"{r-1}의 보수: {r_minus_1_complement}")
    print(f"{r}의 보수: {r_complement}")
728x90

'전자전기 > 논리회로' 카테고리의 다른 글

[논리회로] 진법 변환 ( 방법 및 python code)  (0) 2024.03.30