您的位置:首页 > 其它

数的某位置1 或置0

2014-03-25 16:37 225 查看

如何对数的某位置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");

}


效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: