使用C++更新數字中給定位置或索引的位


在這個問題中,我們需要更新數字的給定索引處的位。為了更新數字,我們可以對給定數字使用位操作。例如:

輸入-1

N= 25
bit= 1
position= 2

輸出

29

解釋 − 給定的輸入25可以用二進位制表示為‘11001’,位置索引為‘2’,位為‘1’。在給定位置替換數字後,輸出將為‘11101’,相當於‘29’。

解決這個問題的方法

在數字的給定位置或索引處,任務是用輸入中給定的特定位來更新位。在給定位置更新位的方法是首先清除給定位置的位,然後執行二進位制AND運算來更新位。

  • 輸入一個數字N,要更新的位為‘bit’,以及要在其上更新位的位 置或索引為‘position’。

  • 一個void函式`updateBit(int &n, int bit, int position)`獲取當前位的地址、位值和位的索引。該函式將透過用給定的位替換該位來列印數字的更新值。

  • 清除給定位置的位,並將結果位新增到結果中。

  • 建立一個掩碼,並對結果執行AND運算。

  • 對我們建立的掩碼執行二進位制OR運算,並對要在索引處更新的值執行右移運算。

示例

 線上演示

#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;
}

輸出

執行上面的程式碼將生成如下輸出:

29

由於輸入是25,其二進位制表示為11001。將位置‘2’替換為‘1’後,它將變為二進位制的11101,即29。

更新於:2021年2月5日

2K+瀏覽量

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告