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

来源:互联网 发布:淘宝如何设置子账号 编辑:程序博客网 时间:2024/05/17 08:18
#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);}

这里写图片描述

阅读全文
0 0