/*
编写一个函数setbits(x,p,n,y),该函数返回对x执行下列操作后的结果值:
将x中从第p位开始的n个二进制位设置为y中最右边n位的值,x的其余各位保持不变.
*/
int setbits(int x,int p,int n,int y)
{
/*
x=11011001 ,p=3,n=3,y=00110111 --->x=11 111 001
*/
return (~(~(~0<<n)<<p)&x) | ((~(~0<<n)&y)<<p);
}
编写一个函数setbits(x,p,n,y),该函数返回对x执行下列操作后的结果值:
将x中从第p位开始的n个二进制位设置为y中最右边n位的值,x的其余各位保持不变.
*/
int setbits(int x,int p,int n,int y)
{
/*
x=11011001 ,p=3,n=3,y=00110111 --->x=11 111 001
*/
return (~(~(~0<<n)<<p)&x) | ((~(~0<<n)&y)<<p);
}