C语言中怎样读取一个8位字节某一位的简单

我在做单片机编程,需要读某个寄存器中的某一位。假设读寄存器ADCSRA中的第4位,我的方法是这样的:读bit(ADCSRA&(1<<4))的值,但是这样就经过了3步的操作... 我在做单片机编程,需要读某个寄存器中的某一位。
假设读寄存器ADCSRA中的第4位,我的方法是这样的:
读bit(ADCSRA & (1<<4))的值,但是这样就经过了3步的操作,好像很傻很累赘。有没有更加直接的语句能够读取某一位?
展开
 我来答
听不清啊
高粉答主

推荐于2017-09-14 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

可以用下面的程序读取一个字符的每一位:

#include<stdio.h>

int main()

{

unsigned char c;

    int i;

scanf("%c",&c);        //读取一个字符,如要读取一个0~255的整数,可将%c改为%u

for(i=7;i>=0;i--)

printf("%d",(c & 1<<i)!=0);        //依次输出它的每一个二进制位

printf("\n");

 getch();

 return 0;

}

幽黯之林
推荐于2018-10-26
知道答主
回答量:11
采纳率:0%
帮助的人:7.2万
展开全部
bit a;
a=(ADCPSRA)&(0x08);
比如ADCPSRA=11011000,和
00001000位与一下,就可以把该位取出来,结果是1,如果ADCPSRA=11010000,位与一下就是0,我说的对吗

参考资料: 如果您的回答是从其他地方引用,请表明出处

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baisuper
2010-08-04 · 超过35用户采纳过TA的回答
知道答主
回答量:130
采纳率:0%
帮助的人:66.7万
展开全部
这个我对单片机的编程不算很了解,不过这条语句的执行时间已经很少很少了,似乎没有必要改进了,这只是我的看法
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lileyear
2010-08-04 · TA获得超过1499个赞
知道小有建树答主
回答量:1291
采纳率:0%
帮助的人:907万
展开全部
优化一下

if((ADCSRA>>4) & 1)

4是位置,可修改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
100duman
2010-08-04 · TA获得超过966个赞
知道小有建树答主
回答量:1014
采纳率:100%
帮助的人:258万
展开全部
哈哈!
还没有这种函数的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式