#include<stdio.h>
#include <stdlib.h>
int invert(int x,int p,int n);
void TenToTwo(int);//将十进制数换成二进制数示出
int main() {
int x, p, n;
printf("invert(x, p, n)");
printf("please input x");
scanf("%d", &x);
printf("please input p");
scanf("%d", &p);
printf("please input n");
scanf("%d", &n);
printf("Output x in binary form\nx:");
TenToTwo(x);
int ss;
ss = invert(x, p, n);
//printf("invert(x, p, n)\nx:%d",ss);
TenToTwo(ss);
return 0;
}
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 invert(int x,int p,int n) {
return x ^ (~(~0<<n) << (p-n));
}
练习 2-7 编写一个函数 invert(x, p, n),该函数返回对x 执行下列操作后的结 果值:将x中从第p位开始的n个(二进制)位求反(即,1 变成0,0 变成1),x的其余各位保持不变。
最新推荐文章于 2021-05-21 16:31:43 发布