给定一个非负数n。问题是设置n的二进制表示形式中最右边的未设置位
例子:
Input : 21
Output : 23
(21)10 = (10101)2
Rightmost unset bit is at position 2(from right) as
highlighted in the binary representation of 21.
(23)10 = (10111)2
The bit at position 2 has been set.
Input : 2
Output : 3
本文讨论一种方法
这篇文章讨论了另一种方法。
令输入数字为n。 n + 1将使所有位在最右边的未设置位(包括未设置位)之后翻转。因此,执行n |(n + 1)将为我们提供所需的结果。
C++
#include
// sets the rightmost unset bit
// of n and returns the result
int fun(unsigned int n)
{
return n | (n + 1);
}
// Driver Code
int main()
{
int n = 5;
printf("The number after setting the");
printf(" rightmost unset bit %d", fun(n));
return 0;
}
Java
class GFG {
// sets the rightmost unset bit
// of n and returns the result
static int fun(int n)
{
return n | (n + 1);
}
// Driver Code
public static void main(String[] args)
{
int n = 5;
System.out.printf("The number "
+ "after setting the");
System.out.printf(" rightmost "
+ " unset bit %d", fun(n));
}
}
// This code is contributed by Smitha
Python3
# sets the rightmost unset bit
# of n and returns the result
def fun(n):
return n | (n + 1)
# Driver Code
n = 5
print("The number after setting the", end="")
print(" rightmost unset bit ", fun(n))
# This code is contributed by Smitha
C#
using System;
class GFG {
// sets the rightmost unset bit
// of n and returns the result
static int fun(int n)
{
return n | (n + 1);
}
// Driver Code
public static void Main()
{
int n = 5;
Console.Write("The number "
+ "after setting the");
Console.Write(" rightmost "
+ "unset bit "+ fun(n));
}
}
// This code is contributed by Smitha
PHP
Javascript
输出 :
The number after setting the rightmost unset bit 7