关于移位的一道题目,帮忙看下问题出在哪里了?

ryangio ryangio 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
题目:、编写一个函数setbits(x, p, n, y),该函数返回对x执行下列操作后的结果值:将x中从第p位(从低位到高位顺序)开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
函数原型:unsigned setbits(unsigned x, int p, int n, unsigned y);

下面是代码:

#include "stdio.h"

int getbit(unsigned x, int n);
unsigned setbit1(unsigned x, int n);
unsigned setbit0(unsigned x, int n);
int setbits(unsigned x, int p, int n, unsigned y);

int main()
{
unsigned a, b;
int m,n;
printf("a=?\n");
scanf("%d",&a);
printf("\nb=?\n");
scanf("%d",&b);
printf("m=? n=?\n");
scanf("%d %d",&m,&n);
a = setbits(a,m,n,b);
printf("\nThe changed a = %d\n", a);
}

int setbits(unsigned x, int p, int n, unsigned y)
{
int i;
unsigned tmp;
for(i=1; i<=n; i++,p++) {
tmp=y;
if(getbit(tmp,i)==1) {
x=setbit1(x,p);
}
else {
x=setbit0(x,p);
}
}
return x;
}


int getbit(unsigned x, int n)
{
x = (x&&(1<<(n-1)))>>(n-1);
if(x==1)
return 1;
else
return 0;
}

unsigned setbit1(unsigned x, int n)
{
x = x||(1<<(n-1));
return x;
}

unsigned setbit0(unsigned x, int n)
{
x = x&&(~(1<<(n-1)));
return x;
}

请帮忙看下,谢谢了
...全文

相关推荐

移位寄存器 串入并出 并入串出.pdf

单片机移位寄存器 串入并出 并入串出讲解............

zjfreeubuntu

4位串入并出移位寄存器

实验五4位串入并出移位寄存器,VHDL实验报告

灬敷衍

移位寄存器串入并出与并入串出

移位寄存器串入并出与并入串出   在数字电路中,移位寄存器(英语:shift register)是一种在若干相同时间脉冲下工作的触发器为基础的器件,数据以并行或串行的方式输入到该器件中,然后每个时间脉冲依次向左或右移动一个比特,在输出端进行输出。这种移位寄存器是一维的,事实上还有多维的移位寄存器,即输入、输出的数据本身就是一些列位。实现这种多维移位寄存器的方法可以是将几个具有相同位数的移位寄存器并联起来。   移位寄存器的输入、输出都可以是并行或串行的。它们经常被配置成串入并出(serial-in, parallel-out, SIPO)的形式或并入串出(parallel-in, seri

weixin_38632916

基于51单片机实现74LS164串入并出移位寄存器

对于串入并出移位寄存器以下是我个人的理解和实际开发工程中得出的经验。一个8位串入数据输入, 8位并行输出。可以看出先移的是高位,就是第一个位进去的到最后会在最高位。

weixin_38508497

基于字符串移位包含的问题详解

代码如下所示: 代码如下:/************************************************************************//* 给定两个字符串s1和s2,要求判定s2是否能被s1做循环移位得到的字符串所包含例如,给定s1 = AABCD, s2 = CDAA,返回true,给定s1 = ABCD, s2 = ACBD,返回false*//************************************************************************/#include “stdafx.h”#include &lt;io

weixin_38621104
评论 3
收藏 已收藏
分享
返回顶部
ryangio
C语言 70,039 成员 243,237 内容