这是进行4位循环移位的最佳方法吗?
<击> 撞击>
<击> n << 1 ^ 0x10 | n >> 3
击> <击> 撞击>
我只测试了实际上是“正在工作”的数字!
答案 0 :(得分:2)
你真的试过这个吗?它不是最优的,它会产生垃圾结果。这应该更好:
static int RollLeft4Bits(int n) {
return ((n << 1) & 15) | ((n >> 3) & 1);
}
答案 1 :(得分:1)
对我来说很好看。但如果您真的关心优化,那么请尝试编译这个以及您拥有的任何替代方案,然后使用ildasm或Reflector来查看生成的IL以确定。
答案 2 :(得分:1)
您还可以生成每个可能值和移位结果的查找表。然后只需使用输入作为查找表的索引即可获得所需的结果