Par*_*dox 0 c++ embedded wrapper bit
简而言之,我目前正在用C++编写C++包装器,用于提取嵌入式系统寄存器的值.为了监视发生的情况,我需要为某些寄存器读取一个位的值,并为每个寄存器创建一个getter.
基本上,我希望我的方法从存储到uint16_t变量中的一个位返回一个bool.在一个'天真'和没有咖啡因的方法我做了类似的事情:
bool getBusyDevice(int fd) // fd stands for file descriptor, for each instance of the class
{
uint16_t statusRegVal = 0;
get_commandReg(fd, &statusRegVal); // C-library function to get the value of status register
uint16_t shift = 0; // depends on the bit to access - for reusability
bool Busy = (bool) (statusRegVal >> shift);
return busy;
}
Run Code Online (Sandbox Code Playgroud)
我对结果不太满意,我想知道是否有"正确"的方法来做到这一点......
非常感谢您的建议!
获得一位的正常方法是使用按位和运算符&.比如说statusRegVal & bitValue.如果设置了该位,则结果将等于bitValue,这意味着要获得布尔结果,您可以进行简单的比较:statusRegVal & bitValue == bitValue.
因此,如果您想检查是否设置了零位(具有该值0x0001),那么您可以这样做
return statusRegVal & 0x0001 == 0x0001;
Run Code Online (Sandbox Code Playgroud)