📜  将任何正实数转换为二进制字符串的Python程序

📅  最后修改于: 2022-05-13 01:55:05.805000             🧑  作者: Mango

将任何正实数转换为二进制字符串的Python程序

给定任何大于或等于零的实数作为浮点数传入,打印输入实数的二进制表示。

例子:

Input: 123.5
Output: 1 1 1 1 0 1 1 . 1

Input: 0.25
Output: .01

数学逻辑以及编程中完成的步骤:

任何实数都分为两部分:整数部分和小数部分。对于这两个部分,操作和逻辑都不同,以将它们转换为二进制表示。

  • 整数部分:

    第 1 步:将整数部分除以 2 并记下其余数(它将是 0 或 1)。
    第 2 步:再次将整数部分除以 2(通过将初始整数除以 2 从第 1 步获得的整数)并记下其余数。
    重复这些步骤,直到您的整数不为零。
    第 3 步:现在反转您在每个步骤中记下的余数序列。这是整数部分的二进制表示。

    编程步骤:

    def intpartbinary(m):
    
        a=[]
        n=int(m)
    
        while n!=0:
            a.append(n%2)
            n=n//2
        a.reverse()
    
        return a

    定义一个函数intpartbinary()将整数部分转换为二进制表示。定义一个空列表,将输入的实数的整数部分除以 2,并将其余数存储到一个空列表中,每次while n==0时,反转列表,这将是整数部分的二进制表示。

  • 小数部分:
    第 1 步:将小数部分乘以 2 并只写出整数部分。
    步骤 2:从步骤 1 中获得的数字中减去整数部分(将小数部分乘以 2),再将小数部分乘以 2。
    重复这些步骤,直到小数部分不为零。获得的序列是给定小数部分的二进制表示。

    编程步骤:

    def decimalpartbinary(m):
    
        a=[]
        n=m-int(m)
    
        while n!=0:
            x=2*n
            y=int(x)
            a.append(y)
            n=x-y
    
        return a

    定义一个函数decimalpartbinary()将小数部分转换为二进制。再次定义一个空列表,通过从输入的实数中减去输入的实数的整数部分,从输入的实数中提取小数部分。现在将其乘以 2 并将结果数字的整数部分仅存储到列表中,然后再次取小数部分并乘以 2,存储其整数部分。重复这个过程,直到小数部分不为零,这将是小数部分的二进制表示。

现在最后结合,下面给出的所有二进制转换将是输入实数的二进制表示。首先写出取反的余数序列和一个点(点),然后写出整数部分序列,我们将小数部分乘以 2 并仅提取整数部分。

def binarycode(m):

    a = intpartbinary(m)
    b = decimalpartbinary(m)
    c = []

    for i in range(0, len(a)):
        c.append(a[i])

    c.append('.')

    for j in range(0, len(b)):
        c.append(b[j])

    print('Binary code of given function is\n')

    for k in range(0, len(c)):
        print(c[k], end=' ')

为此,我们将定义一个名为binarycode()的函数。定义一个空list c=[] ,首先存储整数部分每次除以 2 得到的取反列表,然后在该列表中存储一个小数 c,现在存储整数部分每次乘以 2 得到的列表并且只存储整数部分。现在打印列表 c。最后,我们将实数的二进制表示转换为二进制表示。

下面是实现。

# defining a function to convert 
# integer part to binary
def intpartbinary(m):
      
    a = []
    n = int(m)
      
    while n != 0:
          
        a.append(n % 2)
        n = n//2
          
    a.reverse()
    return a
  
# defining a function to convert 
# fractional part to binary
def decimalpartbinary(m):
      
    a = []
    n = m-int(m)
      
    while n != 0:
          
        x = 2 * n
        y = int(x)
        a.append(y)
        n = x-y
          
    return a
# arranging all data into suitable format
def binarycode(m):
      
    # arranging all data to our desired 
    # format
    a = intpartbinary(m)
    b = decimalpartbinary(m)
    c =[]
      
    for i in range(0, len(a)):
        c.append(a[i])
          
    c.append('.')
      
    for j in range(0, len(b)):
        c.append(b[j])
          
    print('Binary code of given function is\n')
      
    for k in range(0, len(c)):
        print(c[k], end =' ')
          
  
# Driver Code
binarycode(123.5)

输出:

Binary code of given function is

1 1 1 1 0 1 1 . 1