为什么这样就可以把ds1820的负读出来,flag1=b&0x80;这一句不懂???请大虾解释下,

在flag1=b&0x80;中b为ds18b20的高八位,其中前五位为温度标志位,这样一“与”是什么意思啊,flag1又是作怎样的解释??具体解释下,假设b为111110... 在flag1=b&0x80;中b为ds18b20的高八位,其中前五位为温度标志位,这样一“与”是什么意思啊,flag1又是作怎样的解释??具体解释下,假设b为11111001;
a=readdata();
b=readdata();
flag1=b&0x80;
if(flag1)
{
tt=b;
tt<<=8;
tt=tt|a;
tt=~tt+1;
tt=tt*6.25+0.5;
}
else
{
tt=b;
tt<<=8;
tt=tt|a;
tt=tt*6.25+0.5;
}
return tt;
展开
 我来答
班晟睿37
2013-08-13 · 超过11用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:46.2万
展开全部
flag是程序员自己起的变量名,一般情况下将其看作为标志位。我们通常将它视为uchar型变量,将flag赋值时,有flag=!1(flag不等于1)和flag=1;它的作用主要是让单片机的一项功能实现不同的操作,不同的操作通常时间先后顺序不等,不同的操作即通过设置flag=!1(flag不等于1)和flag=1予以区别开来。举个例子:我们要在定时器T0中先后实现1秒和2秒的不同定时,在C语言中,我们定义好的flag变量默认为是0,我们假设先实现1秒的定时,在中断程序中,我们先写if(flag!=1){。。。} 后面再写else { .........}。在不同的语句中就可以实现一个定时器T0为两个不同的中断服务。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
ynh_date
2013-08-13 · TA获得超过421个赞
知道答主
回答量:38
采纳率:0%
帮助的人:40.4万
展开全部
0x80变成2进制是10000000这样与B进行相与是按位与,这样可以把B的第一位取出来而不改变B的值,这是一种常用的办法
比如b为11111001与上10000000那么结果就是10000000那么我就把B的最高位给取了出来,如果要取最低位就&0x01
追问
这样一与的话 flag不是0就是1????我又有点疑问 flag是10000000还是1啊 为什么
追答
这要看你申明变量时 flag的数据类型,如果是布尔型就只有真假2种,如果为整型或其他的数据型 ,在if(flag)这里falg不为0,就会认为是真,如果为0认为假,就是说不管FLAG为多少只要不为0, if(flag)都为真,这里通过与0X80相与只能有2种结果一种是10000000,一种是000000000,那么if(flag)也就有2种结果咯。。对应flag最高位0和1的2种结果
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式