我手头有一个问题:"练习2-6.写一个函数setbits(x,p,n,y)返回x,其中n位从位置p开始设置为y的最右边n位,离开其他位不变."
我已经为此编写了一个函数,如下所示.这是按预期工作的.
int func_setx(int x,int p,int n,int y)
{
int a_t= ~0 << (p+n);
int b_t= ~a_t >> n;
int x_t= x& (a_t | b_t); // a temporary x which has the bits to be changed as 0 , rest of the bits unchanged.
int mask= (y << p) & (~(~0 << (p+n))); // a mask which has required bits from y in positions to be set , rest all bits 0.
printf("\nCheckpoint : mask= %x x_t= %x\n",mask,x_t);
int result= …Run Code Online (Sandbox Code Playgroud) 我一直在阅读K&R C编程语言书,我坚持练习2-6,内容如下:
写一个函数setbits(x,p,n,y)返回x,其中n位从位置p开始,设置为y的最右边n位,其他位保持不变.
我无法理解他们正在寻找我的确切事情.我在这里看了一个可能的答案,但我仍然不太明白.我认为这是让我失望的措辞.任何人都可以用不同的方式解释他们想要我做什么吗?我希望不同的措辞能帮助我理解我需要做的代码.