gpt4 book ai didi

c - 在 C 中使用位和字节

转载 作者:太空宇宙 更新时间:2023-11-04 05:58:22 25 4
gpt4 key购买 nike

我已经检查了已经发布的问题,但无法完全找到我的问题的解决方案...

我正在制作一个输入 2 个变量的控制台程序:1 是一个字节,另一个是我需要仅使用屏蔽和 if 语句从该字节中获取的位数。

int E1 () {
unsigned char a, b, c;

printf("Number (byte):");
scanf("%d", &a);
a= (unsigned char)a;
printf("\n Bit you want to output (between 0 and 7) :");
scanf("%d", &b);
b=(unsigned char)pow((float)2.0,b);
printf("Mask is: %d", b);
c= a & b; //<-- This returns 0
if (c>0) {
printf("\n\nThe bit is: 1");
}
else {
printf("\n\nThe bit is: 0");
}
return 0;
}

我问过我的老师,他说它应该可以正常工作。我试过了,但没用。他使用的是 Visual Studio Express,这是可以从 Microsoft 网站获得的免费版本,我使用的是 Code::Blocks(以防这对结果产生影响)。我在我认为问题所在的地方添加了评论但不确定。

谁能帮我解决这个问题。提前致谢。

最佳答案

使用 1<<b作为面具。它不仅是惯用的,而且比使用浮点计算更有效。所以删除这一行:

b=(unsigned char)pow((float)2.0,b);

并设置c像这样:

c = a & (1<<b)

这样效果更好吗?

关于c - 在 C 中使用位和字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23000141/

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