我需要检查是b
字节1' st位是ON,如果是,则最后2位(.6和.7)也是ON。如何以最优雅的方式制作它?
bool myStatus::isReady()
{
return ((b&0x01) && (b&0xC0==0)) ;
}
优雅意味着最具可读性而不会失去性能
答案 0 :(得分:3)
怎么样?
bool myStatus::isReady() const
{
static auto const mask = 0b11000001; // Or 0xC1
return (b & mask) == mask;
}
这相当于您的描述,但不是您的解决方案。等价的代码必须将比较的右操作数更改为1
,即
return (b & mask) == 1;
另请注意,没有大括号的解决方案是错误的,因为&
的优先级低于==
。
答案 1 :(得分:3)
return (b&0xC1)==0xC1;
如果你真的意味着所有位都像你所说的那样开启
否则return (b&0xC1)==0x01;
如果您想要与您编码的内容等效。
答案 2 :(得分:1)
试试这个:
return (b & 0xC1) == 0x01;
答案 3 :(得分:-1)