是否有逻辑等同于:
if(byte != 0x00 || byte != 0xFF)
if(byte != 0x00 && byte != 0xFF)
Run Code Online (Sandbox Code Playgroud)
我是程序内存限制,可以使用每个优化:)
用单词解释,如果所有位都相同(所有0或全1),你能用逻辑函数检查吗?
谢谢!
假设byte有一个无符号的8位类型[编辑:并假设你的意思&&,而不是||],你可以尝试:
!((uint8_t)(byte+1) <= 1)
Run Code Online (Sandbox Code Playgroud)
显然,不可能说这是否会产生更小的代码,你只需要尝试看看.毫无疑问,其他人可以提出其他逻辑等效的表达方式.
您还可以查看编译器生成的内容,如果您怀疑编译器的优化不是很好,请查看其他更好的编译器生成的内容.这可能会为您提供其他在逻辑上等效的表达式的想法.