首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >K&R C锻炼有帮助

K&R C锻炼有帮助
EN

Stack Overflow用户
提问于 2009-09-12 19:03:36
回答 6查看 2.1K关注 0票数 7

我已经阅读了K&R C编程语言的书,我被困在练习2-6中,内容如下:

编写函数集位(x,p,n,y),返回x,从位置p开始到y的最右边的n位,而其他位不变。

我很难理解他们到底在找我做什么。我看了一个可能的答案,这里,但我仍然不太明白。我觉得这句话让我很不爽。有人能用不同的方式解释他们在找我做什么吗?我希望不同的措辞将帮助我理解我需要做什么代码明智。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-09-12 20:03:30

关于阿维的回答:

代码语言:javascript
运行
复制
int i = setbits(0xAB = b10101011, 5, 3, 0xAA = b10101010);
i equals 0x93 = b10010011

假设你的I= 0xAB。二进制数,这是: 10101011

让我们对每一个位位进行编号。

代码语言:javascript
运行
复制
Position #: 7   6   5   4   3   2   1   0
Bit:        1   0   1   0   1   0   1   1

最右边的位(最不重要的)是位置"0“。最左边(最重要)是位置"7“。

接下来的两个值,p和n,表示“您想修改n位,从位p开始。”因此,如果p=5和n=3,您想从位数5开始,总共要修改3位。在这个例子中,这意味着第5,4,3位。"101“。

代码语言:javascript
运行
复制
Position #: 7   6   5   4   3   2   1   0
Bit:        1   0   1   0   1   0   1   1
                   |         |
                    ---------
               (Modifying these three bits)

我们怎么修改它们?我们要替换他们。另一组3位。从y的三个最不重要的位。

所以这是y:

代码语言:javascript
运行
复制
Position #: 7   6   5   4   3   2   1   0
Bit:        1   0   1   0   1   0   1   0 

最右边的位是2,1,0位。或者值"010“。当然,如果n=6的值,那么您会想要用"101010“替换I中的六位--最右边的6位。

因此,您的任务是从i--在本例中为"101“--获取指定位,并将其替换为y- "010”中的指定位。

如果这样做,则返回值为

1 0 1 0 1 0

票数 13
EN

Stack Overflow用户

发布于 2009-09-12 19:18:02

例如:

代码语言:javascript
运行
复制
int i = setbits(0xAB = b10101011, 5, 3, 0xAA = b10101010);
i equals 0x93 = b10010011

我们取从x (101)的位置5开始的3位,用y (010)中最右边的三位替换它们。

票数 3
EN

Stack Overflow用户

发布于 2009-09-12 19:34:41

“可能的答案”只是没有注释的代码。难怪它对你没有帮助。

这个问题(可能还有答案)假设您熟悉位字段。在控制硬件寄存器的嵌入式编程中,这种情况非常常见。

假设有一个寄存器来设置音频音量级别,以及其他的东西。同时,它也可以让你选择扬声器或麦克风之类的东西。这些数据可能如下所示:

ssAAAmxx --每个字母代表这个数字中的一个位字段。要更改卷,必须更改"AAA“的值。现在,让我们说,您的程序中有一些东西可以让您调整音量。它是一个简单的控件,它总是返回0到7之间的一个数字。

xxxxxAAA --那么,你的工作是从这里取AAA位(称为y ),并将它们设置为上面的数字(称为"x"),而不改变不是A的位。因此,问题会读到,“取y的最右边的3位,并将它们设为x,从位5开始(记住,它们从零开始计数)。然后,在我们的例子中,3和5在原来的问题中变成n和p。”

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1415854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档