如何对数的某位置1 或置0
10 的二进制为:1010
#include <iostream>
#include <cmath>
using namespace std;
#define setbit(x,y) x|=(1<<y) //将X的第Y位置1
#define clrbit(x,y) a&=~(1<<1) //将X的第Y位清0
//
//
//int main()
//{
// int a=290;
// char b[32];
//
// int n = sprintf(b,"%x", a);
// cout<<n<<endl;
// cout<<b<<endl;
// system("pause");
//}
//}
int to2(int n)
{
int r=0;
double b =10;
int shang,yushu;
shang=n;
int i=0;
while(shang!=0)
{
yushu=shang%2;
r=r+pow(b,i)*yushu;
i++;
shang=shang/2;
}
return r;
}
void main()
{
cout<<"10 的二进制1010"<<endl;
int a=10;
setbit(a,0); //a 的0位置1
cout<<"a 的0位置1以后数据发生改变"<<endl;
cout<<a<<endl;
int b = to2(a);
cout<<b<<endl;
clrbit(a,1);//a的1位置0
cout<<"a的1位置0以后数据发生改变"<<endl;
cout<<a<<endl;
int c = to2(a);
cout<<c<<endl;
//a&=~(1<<1);
system("pause");
}
效果如下: