练习 2-7 编写一个函数 invert(x, p, n),该函数返回对x 执行下列操作后的结 果值:将x中从第p位开始的n个(二进制)位求反(即,1 变成0,0 变成1),x的其余各位保持不变。

xiaoxiao2021-02-28  64

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

转载请注明原文地址: https://www.6miu.com/read-35543.html

最新回复(0)