编写一个函数 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));
}