python十进制转化为二进制

python十进制转化为二进制


实例:给定一个非负十进制数n,如何将其转换成为一个二进制数?

输入:123
输出:1111011

输入:1363
输出:10101010011

输入:12
输出:1100

首先我们看一下二进制,由十进制来类比。

考虑一个十进制数,8327,那么

数字: 8 3 2 7

权值:1000 100 10 1

所以, 值为 8*1000+3*100+2*10+7*1。

同理,考察二进制数,10110110,那么

数字:1 0 1 1 0 1 1 0

权值:128 64 32 16 8 4 2 1

所以,值为128+32+16+4+2=182

通常,我们在面对问题的时候,需要分析问题,而分析问题,通常会从最简单的情况开始。所以,看一下最简单的数字的十进制和对应的二进制:

          0                           0

          1                           1

          2                          10

          3                          11

          4                         100

          5                         101

          6                         110

          7                         111

          8                        1000

          9                        1001

         10                        1010

         11                        1011

         12                        1100

         13                        1101

         14                        1110

从上述例子中,你发现了什么规律了吗?

其中可以发现的规律有:

1、若n是偶数,则二进制数末尾数字是“0”,若n是奇数,则二进制数末尾数字是“1”。

2、如果n的二进制数可以表示为bk … b2 b1 b0,那么如果n是偶数,那么n/2的二进制数可以表示为bk … b2 b1,如果n是奇数,那么(n-1)/2的二进制数可以表示为bk … b2 b1。

# 二进制的转换


def Dec2Bin(dec):
    # 递归
    result = ''

    if dec:
        result = Dec2Bin(dec // 2)
        return result + str(dec % 2)
    else:
        return result


def dec_to_bin(n):
    if n < 0:
        print("Please input a nonnegative integer next time. Bye!")
    else:
        original_N = n
        suffix = ""
        while n > 0:
            suffix = str(n % 2) + suffix
            n = n // 2
        # The input n = 0 is dealt with as a special case
        if suffix == "":
            suffix = "0"
        # print("The binary equivalent of", original_N, "is", suffix)
        return suffix

你可能感兴趣的:(leetcode整理,二进制)