2013-05-07 30 views
2

例子:
x = 0xF0AA,现在当我做x = x << 8,我会得到x == 0xAA00。 新值的右侧(8位)填充了零。有没有一种方法int .NET框架,可以填补这些位左侧的位(与disapeared部分)?
结果应该是x == 0xAAF0方法类似<< and >>运营商没有松动位

+0

听起来像你想要一个位/字节旋转操作。 – leppie 2013-05-07 06:41:25

+1

http://en.wikipedia.org/wiki/Circular_shift – JLRishe 2013-05-07 06:43:21

+0

我没有测试过这个,因为我在这台电脑上没有可视化工作室,只是'(x <<8) + (x>> 8)'? – Sayse 2013-05-07 06:44:32

回答

2

你想要做的就是所谓的循环移位。用两班和一个或者两个班来模仿是很容易的。

UInt32 RotateLeft(Uint32 n, int howManyBits) { 
    return n << howManyBits | n >> (32 - howManyBits); 
} 
+0

当我发布我的问题后,我很开心如何实现它,就像你现在展示它一样。 – zgnilec 2013-05-07 07:55:27

相关问题