#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);
}