使用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+浏览量

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.