Computer >> Máy Tính >  >> Lập trình >> C ++

Cập nhật bit ở vị trí đã cho hoặc Chỉ mục của một số bằng C ++

Trong bài toán đã cho, chúng ta phải cập nhật bit của chỉ số đã cho của một số. Để cập nhật số, chúng ta có thể sử dụng thao tác Thao tác bit trên một số nhất định. Ví dụ:

Đầu vào-1 -

N= 25
bit= 1
position= 2

Đầu ra -

29

Giải thích - Vì đầu vào 25 đã cho có thể được viết dưới dạng nhị phân là ‘11001’ trong khi chỉ số vị trí là ‘2’ và bit là ‘1’. Sau khi thay thế các chữ số ở vị trí đã cho, đầu ra sẽ là ‘11101’ tương đương với ‘29’.

Phương pháp tiếp cận để giải quyết vấn đề này

Ở vị trí hoặc chỉ số nhất định của một số, nhiệm vụ là cập nhật bit với bit cụ thể đã cho trong đầu vào. Cách tiếp cận để cập nhật bit ở vị trí đã cho trước tiên là xóa bit ở vị trí đã cho và sau đó thực hiện phép toán Binary AND để cập nhật bit.

  • Lấy Đầu vào một số N, bit để cập nhật là 'bit' và vị trí hoặc chỉ mục mà chúng tôi phải cập nhật bit là 'vị trí'.

  • Một hàm void updateBit (int &n, int bit, int position) lấy địa chỉ của bit hiện tại, giá trị bit và chỉ số của bit. Hàm sẽ in giá trị cập nhật của số bằng cách thay thế bit bằng giá trị đã cho.

  • Xóa bit ở vị trí đã cho và thêm bit kết quả vào kết quả.

  • Tạo mặt nạ và thực hiện thao tác AND với kết quả.

  • Thực hiện thao tác Binary OR với mặt nạ mà chúng tôi đã tạo và thực hiện thao tác dịch phải với giá trị được cập nhật tại chỉ mục.

Ví dụ

#include<iostream>
using namespace std;
void updateBit(int &n,int bit, int pos){
   int clearBit= ~(1<<pos);
   int mask= n & clearBit;
   n= mask |(bit<<pos);
}
int main(){
   int n=25;
   int bit=1;
   int pos=2;
   updateBit(n,bit,pos);
   cout<<n;
}

Đầu ra

Chạy đoạn mã trên sẽ tạo ra kết quả là,

29

Vì đầu vào là 25, là 11001 trong biểu diễn nhị phân. Sau khi thay thế vị trí là ‘2’ bằng ‘1’, nó sẽ trở thành 11101 trong hệ nhị phân là 29.