永发信息网

if((c<<BitCnt)&0x80)SDA=1; 谁能解释一下 ,(c<<BitCnt)&0x80是什么意思 ,if语句怎么判断它是真是

答案:3  悬赏:30  手机版
解决时间 2021-02-04 12:20
  • 提问者网友:浩歌待明月
  • 2021-02-03 14:25
void SendByte(unsigned char c)
{
unsigned char BitCnt;

for(BitCnt=0;BitCnt<8;BitCnt++)
{
if((c< else SDA=0;
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SCL=0;
}

_Nop();
_Nop();
SDA=1;
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
if(SDA==1)ack=0;
else ack=1;
SCL=0;
_Nop();
_Nop();
}
最佳答案
  • 五星知识达人网友:躲不过心动
  • 2021-02-03 15:28
但&是二进制运算符,c左移后和1000000相与,例如C=10101010,那么
1 0 1 0 1 0 1 0
&1 0 0 0 0 0 0 0
=1 0 0 0 0 0 0 0 此时if语句判断为真,则sda =1;发送出去。接着执行循环,C在左移一位后为
0 1 0 1 0 1 0 0和0x80相与结果为 0 0 0 0 0 0 0 0 if语句判断为0,则sda=0 发送出去。
以此类推
全部回答
  • 1楼网友:低血压的长颈鹿
  • 2021-02-03 16:37
前一个问题: c中默认0代表false,而非零代表true,所以当表达式非零时,整个判断是true 后边那个不太懂,似乎是硬件层面的……
  • 2楼网友:白昼之月
  • 2021-02-03 16:14
你好! 就是说把c 左移 BitCnt位后,和0x80相与; <<是左移符号; 假如c=01xx xxxx;(x表示1和0均可),那么 (c<
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯