求助c 程序设计语言(第二版)中一道题
题目:编写一个函数setbits(x,p,n,y),该函数返回对x执行下列操作后的值:将x中从第p位开始的n个数(二进制)位设置为y中最右边的n位的值,x中其他数不变例程:
unsigned setbits (unsigned x,int p,int n,unsigned y){ return x&~(~(~0<<n)<<(p+1-n))|(y&~(~0<<n))<<(p+1-n); }这里如果p+1-n为负数怎么办?如setbits(19,2,4,13)。。。。