数的某位置1 或置0

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


}



效果如下:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值