有效地将整数左移并环绕

时间:2018-12-10 13:39:16

标签: c# optimization bit-manipulation

如何有效地将整数类型的每个位向左移动,然后环绕,使leftMost位变为最右边?

例如,如果类型是字节,则:

1111,1110 becomes 1111,1101
0000,0001 becomes 0000,0010
1000,0000 becomes 0000,0001

此刻我正在使用它:

//num is an ulong
bool leftMostSet = (num & 0x8000000000000000) == 0x8000000000000000;
num = num << 1;
num = num | (leftMostSet ? (ulong)1 : 0);
return num;

我想知道是否还有更有效的方法

0 个答案:

没有答案