【发布时间】:2016-11-17 10:41:23
【问题描述】:
有没有简单的方法来水平翻转位掩码,单线? 它应该执行以下操作:
0b1010101111001101 -> 0b1011001111010101
一个直接的解决方案是一点一点地做:
uint16 flipUint16Horizontally(uint16 bitmask)
{
uint16 flippedMask = 0;
for(unsigned int bit = 0; bit < 16; ++bit)
{
uint16 currentBit = (bitmask & (1 << bit)) >> bit;
flippedMask |= currentBit << (15 - bit);
}
return flippedMask;
}
有没有更优雅的方式?
【问题讨论】:
-
定义优雅。
-
@2501: 不是愚蠢的方式 ;-)
-
你可以找到几种方法here;但是,没有一个想法可以称为“单线”。
-
“单线”和“不笨的方式”通常不兼容。
-
@Lundin 你能不能关闭它,我已经错误地使用了我的投票并且不得不恢复?谢谢。 stackoverflow.com/questions/2253166/reverse-bit-pattern-in-c
标签: c bit-manipulation