用Python编写程序查找具有与n相同的置位位数的更高数字?
假设我们有一个数字n;我们必须找到与n的二进制形式中相同数量的1的最小下一个更高数字。
因此,如果输入是n = 7,则输出将是11,因为7在二进制中为0111,具有三个1的7的下一个更高数字将是11,它在二进制中为1011。
为了解决这个问题,我们将遵循以下步骤:
- copy:= n,zeros:= 0,ones:= 0
-
当复制不为0且为偶数时,执行以下操作
- zeros:= zeros + 1
-
复制=复制/2
-
当复制为奇数时,执行以下操作
- ones:=ones+ 1
-
复制=复制/2
- ones:=ones+ 1
-
右:= ones + zeros
-
n:= n OR (2 ^ right)
-
n:= n AND反转((2 ^ right) – 1)
-
n:= n OR((2 ^ (ones – 1)) – 1
-
返回n
让我们看以下实现以获得更好的理解: