#include<stdio.h>
#include <stdlib.h>
int setbits(int x, int p, int n, int y);
void TenToTwo(int);//将十进制数换成二进制数示出
int main() {
int x, p, n, y;
printf("setbits(x, p, n, y)");
printf("please input x");
scanf("%d",&x);
printf("please input p");
scanf("%d", &p);
printf("please input n");
scanf("%d", &n);
printf("please input y");
scanf("%d", &y);
printf("outputs x and y in binary form, respectively\nx:");
TenToTwo(x);
printf("\ny:");
TenToTwo(y);
int ss;
ss=setbits(x, p, n, y);
printf("setbits(x, p, n, y)\nx:");
TenToTwo(ss);
system("pause");
}
void TenToTwo(int ten) {
int two[100];
int shang = ten;
int yu;
int i = 0;
while (shang != 0) {
yu = shang % 2;
shang = shang / 2;
two[i++] = yu;
}
for (int j = i - 1; j >= 0; --j) {
printf("%d", two[j]);
}
printf("\n");
}
int setbits(int x, int p, int n, int y) {
return x &~(~(~0 << n) << (p - n)) | (y & ~(~0 << n)) << (p - n);
}
练习 2-6 编写一个函数 setbits(x, p, n, y),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
最新推荐文章于 2023-04-10 23:45:00 发布