Python如何实现二进制和十进制互相转换?

2021年3月23日15:17:35 发表评论 810 次浏览

编写Python代码, 将十进制数转换为等效的二进制数, 反之亦然。

例子:

From decimal to binary
Input : 8
Output : 1 0 0 0


From binary to decimal
Input : 100
Output : 4

推荐:请尝试以下方法{IDE}首先, 在继续解决方案之前。

十进制到二进制

Keep calling conversion function with n/2  till n > 1, later perform n % 1 to get MSB of converted binary number.  
Example :- 7
1). 7/2 = Quotient = 3(grater than 1), Remainder = 1.
2). 3/2 = Quotient = 1(not grater than 1), Remainder = 1.
3). 1%2 = Remainder = 1.
Therefore, answer is 111.
# Function to print binary number for the 
# input decimal using recursion 
def decimalToBinary(n): 
  
     if (n > 1 ): 
         # divide with integral result 
         # (discard remainder) 
         decimalToBinary(n / / 2 ) 
  
      
     print (n % 2 , end = ' ' )
      
      
  
# Driver code 
if __name__ = = '__main__' : 
     decimalToBinary( 8 ) 
     print ( "\n" )
     decimalToBinary( 18 ) 
     print ( "\n" )
     decimalToBinary( 7 ) 
     print ( "\n" )

输出如下:

1 0 0 0 
1 0 0 1 0 
1 1 1

使用bin()十进制转换为二进制:

# Function to convert Decimal number
# to Binary number
  
def decimalToBinary(n):
     return bin (n).replace( "0b" , "")
  
# Driver code
if __name__ = = '__main__' :
     print (decimalToBinary( 8 ))
     print (decimalToBinary( 18 ))
     print (decimalToBinary( 7 ))

输出如下:

1000
10010
111

二进制到十进制

Example -: 1011
1). Take modulo of given binary number with 10. 
    (1011 % 10 = 1)
2). Multiply rem with 2 raised to the power
    it's position from right end. 
    (1 * 2^0)
    Note that we start counting position with 0. 
3). Add result with previously generated result.
    decimal = decimal + (1 * 2^0)
4). Update binary number by dividing it by 10.
    (1011 / 10 = 101)
5). Keep repeating upper steps till binary > 0.

Final Conversion -: (1 * 2^3) + (0 * 2^2) +
                 (1 * 2^1) + (1 * 2^0) = 11
# Function calculates the decimal equivalent 
# to given binary number
  
def binaryToDecimal(binary):
      
     binary1 = binary
     decimal, i, n = 0 , 0 , 0
     while (binary ! = 0 ):
         dec = binary % 10
         decimal = decimal + dec * pow ( 2 , i)
         binary = binary / / 10
         i + = 1
     print (decimal)    
      
  
# Driver code
if __name__ = = '__main__' :
     binaryToDecimal( 100 )
     binaryToDecimal( 101 )
     binaryToDecimal( 1001 )

输出如下:

4
5
9

使用int()的二进制到十进制:

# Function to convert Binary number
# to Decimal number
  
def binaryToDecimal(n):
     return int (n, 2 )
  
  
# Driver code
if __name__ = = '__main__' :
     print (binaryToDecimal( '100' ))
     print (binaryToDecimal( '101' ))
     print (binaryToDecimal( '1001' ))

输出如下:

4
5
9

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

注意怪胎!巩固你的基础Python编程基础课程和学习基础知识。

首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: