找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3921|回复: 7
打印 上一主题 下一主题
收起左侧

求指导!data|=(1<<(7-i))

[复制链接]
跳转到指定楼层
楼主
ID:118184 发表于 2016-5-16 09:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,求大神指导这句data|=(1<<(7-i))什么意思啊,全文如下:int DHpin=40;
byte dat[5];

byte read_data()
{
byte data;
for(i=0;i<8;i++)
{
if(digitalRead(DHpin)==LOW)
{
while(digitalRead(DHpin)==LOW)
delayMicroseconds(50);
if(digitalRead(DHpin)==HIGH)
data|=(1<<(7-i));
while(digitalRead(DHpin)==HIGH)
}
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:113415 发表于 2016-5-16 14:31 | 只看该作者
看看c语言中关于运算符的优先级与结合性就清楚了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:120832 发表于 2016-5-16 22:38 | 只看该作者
data|=(1<<(7-i))

其实是data = data | (1<<(7-i))

| 是位或   
<<是左移位操作。
7-i 结果为 1的话,那么就是00000001 左移一位。
回复

使用道具 举报

地板
ID:118184 发表于 2016-5-19 11:47 | 只看该作者

谢谢!
回复

使用道具 举报

5#
ID:513400 发表于 2019-5-15 19:44 | 只看该作者
这个实现什么功能吖,进制转换》
回复

使用道具 举报

6#
ID:532564 发表于 2019-5-16 18:06 | 只看该作者
data 和 1 往左移了 (7-i) 位的数进行按位或运算的结果再赋给data 最后的结果就是循环时你的data=1000 0000,0100 0000....0000 0001
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表