如何通过位移来置位

来源:互联网 发布:linux vi退不出来 编辑:程序博客网 时间:2024/05/16 15:13

通过位移来设置一个变量的某一位为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;}
阅读全文
0 0
原创粉丝点击