给定数字n ,位置p和二进制值b ,我们需要将n中位置p的位更改为值b。
例子 :
Input : n = 7, p = 2, b = 0
Output : 3
7 is 00000111 after clearing bit at
2rd position, it becomes 0000011.
Input : n = 7, p = 3, b = 1
Output : 15
7 is 00000111 after setting bit at
3rd position it becomes 00001111.
We first create a mask that has set bit only
at given position using bit wise shift.
mask = 1 << position
Then to change value of bit to b, we first
make it 0 using below operation
value & ~mask
After changing it 0, we change it to b by
doing or of above expression with following
(b << p) & mask, i.e., we return
((n & ~mask) | (b << p))
下面是上述步骤的实现:
C++
// CPP program to modify a bit at position
// p in n to b.
#include
using namespace std;
// Returns modified n.
int modifyBit(int n, int p, int b)
{
int mask = 1 << p;
return ((n & ~mask) | (b << p));
}
// Driver code
int main()
{
cout << modifyBit(6, 2, 0) << endl;
cout << modifyBit(6, 5, 1) << endl;
return 0;
}
Java
// Java program to modify a bit
// at position p in n to b.
import java.io.*;
class GFG
{
// Returns modified n.
public static int modifyBit(int n,
int p,
int b)
{
int mask = 1 << p;
return (n & ~mask) |
((b << p) & mask);
}
// Driver Code
public static void main (String[] args)
{
System.out.println(modifyBit(6, 2, 0));
System.out.println (modifyBit(6, 5, 1));
}
}
// This code is contributed by m_kit
Python3
# Python3 program to modify a bit at position
# p in n to b.
# Returns modified n.
def modifyBit( n, p, b):
mask = 1 << p
return (n & ~mask) | ((b << p) & mask)
# Driver code
def main():
print(modifyBit(6, 2, 0))
print(modifyBit(6, 5, 1))
if __name__ == '__main__':
main()
# This code is contributed by PrinciRaj1992
C#
// C# program to modify a bit
// at position p in n to b.
using System;
class GFG
{
// Returns modified n.
public static int modifyBit(int n,
int p,
int b)
{
int mask = 1 << p;
return (n & ~mask) |
((b << p) & mask);
}
// Driver Code
static public void Main ()
{
Console.WriteLine(modifyBit(6, 2, 0));
Console.WriteLine(modifyBit(6, 5, 1));
}
}
// This code is contributed by ajit
PHP
Javascript
输出 :
2
38
时间复杂度: O(1)