Cli*_*ung 1 c bit-manipulation low-level low-level-code
我想编写一个获得数字X的函数,如果X = 5则返回7,如果X = 7则返回5,否则返回其他内容.有一些简单的方法 - 使用"if"块另一种方式 - 使用地图(5映射到7,7映射到5)第三种方式 - 写出匹配的线性数学方程式但是我正在寻找第4种方式这样做(再次 - 根本不使用"if"块).
感觉我需要使用位操作,但我在这方面不占优势,所以我需要帮助.
有任何想法吗?
谢谢!
除了明显的按位XOR解决方案,您还可以利用布尔表达式返回1或0的事实,例如
int f(int x)
{
return (x == 5) * 7 + (x == 7) * 5;
}
Run Code Online (Sandbox Code Playgroud)
还有其他简单的算术方法,例如
int f(int x)
{
return 12 - x;
}
Run Code Online (Sandbox Code Playgroud)