C语言03 位操作

1、置位和清零

    嵌入式系统总是要对变量或寄存器进行位操作。给一个整型变量a,写两段代码,第一个设置a

的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。

#define BIT3 (0x1<<3)
static int a;
void set_bit3(void)
{
    a |= BIT3;
}
void clear_bit3(void)
{
    a &= ~BIT3;
}

C语言03 位操作_第1张图片

2、移位和取值

有一个16位的整数,每4位为一个数,写函数求他们的和。

解释:

整数 0B1101010110110111

和  1101+0101+1011+0111

/* n就是16位的数,函数返回它的四个部分之和 */
char SumOfQuaters(unsigned short n)
{
    char c = 0;
    int i = 4;
    do
    {
        c += n & 15;
        n = n >> 4;
    } while (--i);
    return c;
}

你可能感兴趣的:(C基础)