C程序位操作练习(一)


编写一个函数 setbits(x, p, n, y),该函数返回对x执行下列操作后
的结果值:将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余
各位保持不变。

#include
int setbits(int x, int p, int n, int y);
int setbits(int x, int p, int n, int y)
{
        int t;
        t = ~(~0 << n);
        return (x & ~(t << (p + 1 - n))) | ((y & t) << (p + 1 - n));
}

main()
{
        printf("%d\n", setbits(58, 4, 3, 13));
        printf("%d\n", setbits(58, 4, 3, 15));
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注