题目:将一个无符号整形数的二进制bite位的某一位置1,然后输出置1后的无符号整数的值。
例如:891的二进制位:1101111011 把第三位置1后为1111111011,值为1019,
输入模式为:891 3
输出为:1019
参考代码:
</pre><pre name="code" class="cpp"><span style="font-size:18px;"><strong>#include<iostream>
#include<string>
#include<math.h>
using namespace std;
void zhuanhuan(unsigned int m,int n)
{
int yushu=0;
int shang=m;
int erjingzhi[33]={0};
int k=0;
while(shang)
{
yushu=shang%2;
shang=shang/2;
erjingzhi[k++]=yushu;
}
int index_m=0;
int index_n=k-1;
if((k-1)%2==1)
{
for(int j=0;j<=((k-1)/2);j++)
{
int tep;
tep=erjingzhi[j];
erjingzhi[j]=erjingzhi[index_n];
erjingzhi[index_n]=tep;
index_n--;
}
}
if((k-1/2)==0)
{
while(index_m!=index_n)
{
int temp;
temp=erjingzhi[index_m];
erjingzhi[index_m]=erjingzhi[index_n];
erjingzhi[index_n]=temp;
index_m++;
index_n--;
}
}
if(erjingzhi[n-1]==1)
{
cout<<m;
}
else
{
erjingzhi[n-1]=1;
m=m+pow(2,k-n);
cout<<m;
}
}
int main()
{
unsigned int a;
int N;
cin>>a;
cin>>N;
zhuanhuan(a,N);
return 0;
}</strong></span>