位域中的数据处理

时间:2018-02-26 18:03:38

标签: c

我正在阅读涉及一些按位操作的代码,如下所示:

unsigned char data = 0;
unsigned char status = 0;

//DAQmx functions for reading data
DAQmxReadDigitalLines(taskHandleIn,1,10.0,DAQmx_Val_GroupByChannel,dataIn,8,&read,&bytesPerSamp,NULL);
DAQmxReadDigitalLines(taskHandleOut,1,10.0,DAQmx_Val_GroupByChannel,dataOutRead,8,&read,&bytesPerSamp,NULL);


for (int i = 0; i < 8; i++)
{
    if (dataOutRead[i] == 1)
        data = data | (0x01 << i);
    else
        data = data & ~(0x01 << i);
}

for (int i = 0; i < 4; i++)
{
    if (dataIn[i] == 1)
        status = status | (0x01 << (7 - i));
    else
        status = status & ~(0x01 << (7 - i));
}
ctrl = 0;

在上述代码中,dataOutReaddataIn都是uInt8 8元素数组,最初初始化为零。

我不太清楚代码实际上在做什么?有人可以告诉我这些代码吗?

0 个答案:

没有答案