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

xiaoxiao2021-02-28  117

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

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

最新回复(0)