【发布时间】:2023-04-03 11:31:01
【问题描述】:
这个函数的代码是什么样的?抱歉,我是自学和编程新手
创建一个名为 reset_bits(int value, int pos, int n) 的函数,它将位位置 pos, pos + 1, ..., pos + n - 1 的 n 个连续位值中的每一个设置为位值0,并以十六进制打印结果。例如,reset_bits(0x8C3E, 2, 3) 会打印出 0x8C22,这是将 0x8C3E 的第 2、3、4 位位置设置为 0 的结果。可以假设 pos 和 n 指定的所有位位置都有效位位置。您可以使用的唯一 C 库函数是 printf()。
这是我一本关于 C 编程的书中的练习题,但我没有解决方案手册。
模板:
#include <stdio.h>
#include <limits.h>
int reset_bits(int value, int position, int n) {
int r = pos + 1;
int l = pos + n;
int range = (((0xFF << (r - 1)) - 1) ^ ((0xFF << (l) - 1));
int answer = value | range;
printf("%x", answer);
printf("\n");
}
int main() {
reset_bits(0x8C3E, 2, 3);
}
【问题讨论】:
-
您需要向我们展示您尝试过的内容以及遇到的具体问题。我们在这里为您提供帮助,我们不是编码服务。请阅读help center 页面。
-
欢迎来到 SO!看起来您没有编写任何代码。最好自己尝试一下,然后只有在遇到困难时才询问。见How to Ask。
-
好的,我添加了我的代码。抱歉,堆栈溢出的新手
-
很高兴你已经添加了你的代码。现在描述一下你有什么问题。
-
value | range这立即突出。|可以将位翻转到1,并且永远不能清除位到0。
标签: c integer bitwise-operators function-definition