如何有效地将整数类型的每个位向左移动,然后环绕,使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;
我想知道是否还有更有效的方法