位运算学习总结
位运算作用
1. 掩码掩码是某些位设为开(1),而某些位设置为关(0)的位组合
ch &= 0xff; //留下ch的最后8位2. 打开位
有时需要打开一个值的特定位,同时其他位不变,使用“位或”来实现
ch = ch | 0x01; //打开第一位3. 关闭位
不影响其它位,关闭特定位,使用“与”
ch = ch & 0xFE; //关闭第一位
4. 转置位把1的变为0,0变为1;使用“异或”
ch ^= 0xff; //转置所有位5.查看一位的值
if( (flag & MASK) == MASK )
{
... ...
}移位运算
<< 左移;>> 右移
提供高效的对2的幂的乘法和除法
例,使用位运算显示二进制数:
char* itobs( int nNumber, char* pReturn )
{
static int size = 8 * sizeof(int);
for( int i = size - 1 ; i >= 0; i--, nNumber >>= 1)
{
pReturn[i] = ( 1 & nNumber ) + '0';
}
pReturn[size] = '\0';
return pReturn;
}反转最后几位
int invert_end( int nNumber, int nCount)
{
int mask = 0;
int bitmaks = 1;
while( nCount-- > 0 )
{
mask |= bitmaks;
bitmaks <<= 1;
}
return nNumber^mask;
}位字段
struct segment
{
unsigned int seg1:1;
unsigned int seg2:1;
};指定两个1位字段, seg1和seg2各占1位,整个struct 占4个字节(unsigned int),只用了其中2位(共4*8=32位)。
1284

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



