python如何输出二进制数,python任意整数输出二进制

  python如何输出二进制数,python任意整数输出二进制

  题目:输入一个整数,输出这个数的二进制表示的数1。其中负数用补码表示。

  解析:如果一个整数不是0,那么这个整数至少有一位是1。如果我们从这个整数中减去1,原来最右边的1会变成0,1后面的所有0都会变成1(如果最右边的1后面还有零的话)。所有剩余的位都不会受到影响。

  比如:一个二进制数1100,右数第三位是最右边的1。减去1后,第三位变成0,后面的两个零变成1,而前面的1不变,所以结果是1011。我们发现减去1的结果是反转从最右边的1开始的所有位。此时,如果我们将原整数和减1后的结果相加,所有的位都将从原整数最右边的1位变成0。比如11001011=1000。也就是说,将一个整数减去1,与原整数进行and运算,会将该整数最右边的1变为0。然后,这个过程可以重复很多次,只要一个整数的二进制中有1。

  特别是python中首先明确的一点是,二进制没有数字的概念,所以无法获得负数的真实表示。对于负数,无论是右移运算还是n(n-1)运算都会陷入无限循环。所以用0xffffffff的招数,把负数换成python认为的正数(和机器里的补码一样)。那么用正数来操作就简单了。

  原码:正数按绝对值转换成二进制数,负数按绝对值转换成二进制数,最高位加1。

  逆码:正数的逆码与原码相同,负数的逆码是该数除符号位以外的原码的逆。

  补码:正数的补码与原码相同,负数的补码是将该数除符号位外的原码反相,然后在最后一位加1。

  类别解决方案:

  def NumberOf1(自身,n):

  如果n 0:

  n=n0xffffffff

  计数=0

  而n:

  n=n (n - 1)

  计数=1

  返回计数

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

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