zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

执行二进制 函数 一个 操作 设置 编写 开始
2023-09-14 09:06:57 时间

C语言程序设计(第二版) 练习2-6 个人设计

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

代码块

#include <stdio.h>
#include <stdlib.h>
int setbits(int x, int p, int n, int y);
int main()
{
	int a, b, c, d;
	printf("Please enter original number: ");
	scanf("%d", &a);
	printf("Please enter bits: ");
	scanf("%d", &b);
	printf("Please enter move number: ");
	scanf("%d", &c);
	printf("Please enter compare number: ");
	scanf("%d", &d);
	printf("Result=%d\n", setbits(a, b, c, d));
	system("pause");
	return 0;
}
int setbits(int x, int p, int n, int y)
{
	return ((y>>n<<n^y)<<(p+1-n))+(x>>(p+1)<<(p+1))+((x>>(p+1-n)<<(p+1-n))^x);
}

如果程序设计有错误或更简洁的方法,欢迎并感谢您指正出示,谢谢!