📜  在给定位置修改一点

📅  最后修改于: 2021-05-25 01:49:12             🧑  作者: Mango

给定数字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)