通过位移来设置一个变量的某一位为0或者为1,并且保持其他位不改变,这里置位函数为:
void bit_set(unsigned char *p_data, unsigned char position, bool flag);
p_data 是一个指向要置位的数的指针,position是要具体置位数的哪一位,从0下表开始,flag为bool类型,为真则置位1,为假置位0,下面我们来看看代码实现过程:
#include<iostream>
using namespace std;
void bit_set(unsigned char *p_data, unsigned char position, bool flag)
{
/* int sum = 1;
int sum1 = 1;
int sum2 = 0;
if(p_data != NULL && (position >=1 && position <= 8))
{
for(int i =0; i<position; ++i)
{
if(i == 0)
sum = 1;
else
sum *= 2;
}
for(int j=0; j<8; ++j)
{
if(i == 0)
sum1 = 1;
else
sum1 *= 2;
}
sum2 = sum1 - sum;
if(flag)
*p_data |= sum;
else
*p_data *= sum2;*/
//简单的四行代码就可以解决问题
if(flag)
*p_data |= (1<<position-1);
else
*p_data &= ~(1<<position-1);
}
}
int main()
{
unsigned char p_data = 'A';
unsigned char position = 2;
bool flag = 1;
bit_set(&p_data, position,flag);
cout<<p_data<<endl;
return 0;
}
本文介绍了一种使用位操作来设置变量特定位的方法。该方法通过一个简单的函数实现,能够将指定位置的位设置为1或0,同时保持其他位不变。通过示例代码展示了如何在C++中实现这一功能。
2136

被折叠的 条评论
为什么被折叠?



