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

Python에서 기본 10 정수의 보수

<시간/>

십진수 시스템에 숫자가 있다고 가정합니다. 숫자의 보수를 이진 형식으로 얻은 다음 다시 십진수로 변경하고 결과를 반환해야 합니다. 따라서 숫자가 20이면 이진 형식은 10100이 되고 보수는 01011이 되며 십진수로 11이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • s :=숫자 n의 이진 문자열
  • 합계:=0 및 숫자:=1
  • s의 각 요소 i에 대해 역방향으로
    • i ='b'이면 합계를 반환합니다.
    • 그렇지 않으면 i ='0'일 때 sum :=sum + num
    • 숫자 :=숫자 * 2

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

class Solution(object):
   def bitwiseComplement(self, N):
      s = str(bin(N))
      sum = 0
      num = 1
      for i in s[::-1]:
         if i == "b":
            return sum
         elif i =="0":
            sum+=num
         num*=2
ob1 = Solution()
print(ob1.bitwiseComplement(20))

입력

20

출력

11