该计划的意义是什么?

时间:2014-11-22 21:04:45

标签: python

我知道程序将Decimal转换为Binary,实际上我只是编程的初学者而python是我的首发语言。

回答这些问题对我有很大帮助。

def bin(i):
    s = "" # what do we mean by s="" ? does it mean s=0?
    while i: # where is the condition ? 
        if i & 1: # what is the equivalent for '&'? when I put 'and' instead of '&' I get differnt results?why?
            s = "1" + s # ?
        else:
            s = "0" + s
        i = i//2 # why?
    return s

问题是我想要解决输入和输出之间发生的事情? 还有一件事我们可以将这段代码扩展到浮动数字吗?

1 个答案:

答案 0 :(得分:3)

让我试着一次一个地回答你的问题;那么你应该把它们拼凑起来:

s = "" # what do we mean by s="" ? does it mean s=0?

s现在是一个空字符串。你可以添加其他字符串,以连接它们。实际上,这是后来在s = "1" + s行中所做的。看看:

In [21]: "1" + ""
Out[21]: '1'

In [22]: "1" + "2"
Out[22]: '12'

In [23]: s = ""

In [24]: "1" + s
Out[24]: '1'

查看字符串连接的工作原理?

下一步

while i: # where is the condition ?

啊!在条件语句(如0或{{}中使用时,许多编程语言(包括python)中存在一个值为False的整数求值为if的布尔值的细微差别。 1}})。所有非零值都评估为while

因此,这个while循环是True。请注意,由于while i does not take the value of 0之后的分割,i永远不会采用负值,因此此循环终止。

下一步

i

if i & 1: # what is the equivalent for '&'? when I put 'and' instead of '&' I get differnt results?why? 是一个按位运算符。假设i&1的值为i。然后,5的二进制表示为i101的二进制表示只是11(因为我们将它与001进行比较)。所以现在,我们执行逐位AND,它基本上比较每对相应的位,如果它们都是101 s,则输出1(否则为1)。因此,比较0101的结果是001,其转换为001的值。所有这些意味着,当您将1除以i时,您将得到余下的2。由于唯一的可能性是1(在if语句中评估为1)或True(在if语句中评估为0),有助于以这种二分法的方式使用(将False"0"添加到"1"

下一步

s

这是带有整数转换的截断除法。观看:

i = i//2

得到它?