C#提供的移位运算符是单向移位的,如果要循环移位,搜索了下网上资料,发现这位大神写的,拿来借鉴与使用。
/// <summary> 循环移位
/// </summary>
/// <param name="val">输入的数字</param>
/// <param name="iShiftBit">要移几位</param>
/// <param name="isLeft">移位的方向</param>
/// <returns>移位后的数字</returns>
private uint cycleShift(uint val, int iShiftBit, bool isLeft)
{
uint temp = 0;
uint result = 0;
temp |= val;
if(isLeft)
{
val <<= iShiftBit;
temp >>= (32 - iShiftBit);
result = val | temp;
}
else
{
val >>= iShiftBit;
temp <<= (32 - iShiftBit);
result = val | temp;
}
return result;
}
原文地址:点击打开链接
备注:以上链接的原文链接貌似找不到了,就放这个地址吧