python读取二进制,10进制转2进制python

  python读取二进制,10进制转2进制python

  这是探索布尔逻辑的好机会。在

  这样的二进制加法器可以用两个"半加法器"和一个"或"完成

  首先是"半加法器"。这是异或,给出加法输出和进位。在

  [按注释编辑:python确实有作为^实现的异或,但不是像andnotor这样的"单词"。我保持着答案。因为它解释了二进制加法背后的布尔逻辑。"

  大蟒没有异或,所以我们必须写一个。

  异或运算本身是两个以及(有反向输入)和一个或者,如下所示:

  结果是简单的函数,如下defxor(bit_a,bit_b):

  a1=位_ a(非位_b)))

  a2=(notbit_a)和位_b

  返回输入(a1ora2))。

  其他人可能想这样写:

  ^{pr2}$

  这非常有效,但我用的是布尔型的例子。在

  下一步,它具有两个输入(比特)a,比特(b)),并对半加希腊字母的第一个字母进行编码,以提供两个输出(加法异或(defhalf_adder ) bit_a,bit_b):)

  return(xor ) bit_b,bit_b),bit_a和bit _ b))))))return(xor)))))65

  因此,两个"半加法器"和一个"或"构成这样的"全加法器"。

  如您所见,它有三个输入(位答:位乙、进位)和两个输出(求和并进位).在大蟒中,情况如下:deffull_adder(bit_a,bit_b,进位=0):

  sum1,Carry1=half_adder(bit_a,bit_b))))))sum 1,Carry1=half_adder(bit_a,bit _ b)))))

  sum2,Carry2=half_adder(sum1,Carry)))))))。

  返回(总和2,进位一或进位2).

  如果你想把全加器看成逻辑图,它应该是这样的:

  接下来,你需要调用这个全加器。从最低有效位(最低有效位)开始,以0为进位,再到最高有效位(MSB),将进位作为下一步的输入。以下所示的四位。

  结果如下defbinary_string_adder(bits_a,bits_b):

  嘉莉=0

  结果=

  forIinrange(Len ) bits_a )-1,-1,-1):

  summ,carry=full_adder(int(bits_a[I],int ) bits_b[I],carry))

  结果=字符串(总和)

  结果=字符串(进位)

  返回结果[:-1]

  如您所见,需要反转结果字符串。这是因为构建方法"错误"。在

  将它们整理成完整的工作代码:#布尔二进制字符串加法器

  DFR just _ length(S1 S2 fill= 0 ):

  l1、L2=伦(S1)伦(S2)))))))))L1、L2=伦(S1)伦(S2)))))))))L1)、L2)、L2 ) L2 ) L2 ) L2)

  如果l1 l2:

  S2=S2.rjust(L1,填充)).

  elif l2 l1:

  S1=S1.rjust(L2,填充)).

  返回(S1,s2)。

  efget_input(:

  bits _ a=输入(inputyourfirstbinarystring))

  bits _ b=输入(inputyoursecondbinarystring))

  returnr just _ length(bits _ a,bits_b))。

  defxor(bit_a,bit_b):

  a1=位_ a(非位_b)))

  a2=(notbit_a)和位_b

  返回输入(a1ora2))。

  efhalf_adder(bit_a,bit_b):

  return(xor ) bit_b,bit_b),bit_a和bit _ b))))))return(xor)))))65

  e全加器(位a,位b,进位=0):

  sum1,Carry1=half_adder(bit_a,bit_b))))))sum 1,Carry1=half_adder(bit_a,bit _ b)))))

  sum2,Carry2=half_adder(sum1,Carry)))))))。

  返回(总和2,进位一或进位2).

  defbinary_string_adder(bits_a,bits_b):

  嘉莉=0

  结果=

  forIinrange(Len ) bits_a )-1,-1,-1):

  summ,carry=full_adder(int(bits_a[I],int ) bits_b[I],carry))

  结果=字符串(总和)

  结果=字符串(进位)

  返回结果[:-1]

  戴尔主(:

  位_a,位_ b=获取_输入(

  print(1 tstringofbits is:(,) )、format ) bits_a,int ) bits_a,2))

  print(2ndstringofbitsis:(,)、format ) bits_b、int ) bits_b、2))

  result=binary _ string _ adder(bits _ a,bits_b))。

  打印(概括起来就是: (,() ),format)结果,int)结果,2))

  if __name__==__main__ :

  main())

  照片的两个互联网来源:

  有趣的是,三行就可以完成。其中两行实际上正在获取输入bits _ a=输入(inputyourfirstbinarystring))

  bits _ b=输入(inputyoursecondbinarystring))

  打印((03360b)).格式)int ) bits_a,2 ) int ) bits_b,2))

  在您自己的代码中,如果在第二次迭代和以后的迭代中该位为0,则设置x=0,包含最后一次迭代的进位。在

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: