char类型的变量在内存中占用一个字节,即8位,想要单独设置某一位位0或者1,就只需要对这一位通过与或者或者或的运算进行设置
int GetBit(char c,int i)//取c的第i位
{
return ( c >> i ) & 1;
}
void SetBit(char & c,int i, int v)//设置c的第i位为v,v是0或1
{
if( v )
c |= ( 1 << i);
else
c &= ~( 1 << i);
}
void Flip(char & c, int i) //将c的第i位为取反
{
c ^= ( 1 << i);
}
对于一个char型的变量 每一位为1 对应的分别为 2、4、8、16、32、64、128、256
对于1每左移一位相当于乘以了2
比如:
(1<< 1) 为2,相当于1 * 2
(1 << 2) 为4,相当于1 * 4
(1 << 3) 为8,相当于1 * 8
(1 << 4) 为16,相当于1 * 16
如果(3 << 1)为6,相当于3 * 2=6