我需要检查b
字节的第1个位是否为ON,如果是,则最后2个位(.6和.7)也为ON。如何以最优雅的方式制作呢?
bool myStatus::isReady()
{
return ((b&0x01) && (b&0xC0==0)) ;
}
优雅意味着最易读而不失性能
最佳答案
关于什么
bool myStatus::isReady() const
{
static auto const mask = 0b11000001; // Or 0xC1
return (b & mask) == mask;
}
这等效于您的描述,而不是您的解决方案。与您的代码等效的代码必须将比较的正确操作数更改为
1
,即return (b & mask) == 1;
还要注意,没有括号的解决方案是错误的,因为
&
的优先级低于==
。关于c++ - 优雅的二进制比较操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26550352/