gpt4 book ai didi

c - K&R C 练习帮助

转载 作者:太空狗 更新时间:2023-10-29 17:06:13 24 4
gpt4 key购买 nike

我一直在浏览 K&R C Programming Language 一书,但我坚持练习 2-6,内容如下:

Write a function setbits(x,p,n,y) that returns x with the n bits that begin at position p set to the rightmost n bits of y, leaving the other bits unchanged.

我无法理解他们要我做的确切事情。我看了一个可能的答案 here ,但我还是不太明白。我认为这是让我失望的措辞。谁能用不同的方式解释他们要我做什么?我希望不同的措辞能帮助我理解我需要做的明智的代码。

最佳答案

阐述 Avi 的回答:

int i = setbits(0xAB = b10101011, 5, 3, 0xAA = b10101010);
i equals 0x93 = b10010011

假设您的 i = 0xAB。在二进制中,这是:10101011

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

Position #: 7   6   5   4   3   2   1   0
Bit: 1 0 1 0 1 0 1 1

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

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

Position #: 7   6   5   4   3   2   1   0
Bit: 1 0 1 0 1 0 1 1
| |
---------
(Modifying these three bits)

我们如何修改它们?我们正在更换它们。使用另一组 3 位。来自 y 的三个最低有效位。

所以这是你:

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”(最右边的 6 位)替换 i 中的那六位。

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

如果你这样做,那么你的返回值为

1 0 1 0 1 0 1 0

关于c - K&R C 练习帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1415854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com