给定一个long
字节WXYZ
(每个字母都是一个字节),我想要一些快速的位旋转代码,它将创建两个longs
与原始字节相同的字节,但与 0 字节交错。
例如,给定long
with 值ABCDEFGH
(每个字母为一个字节),产生两个 long:
0A0B0C0D
0E0F0G0H
相当于,但比:
long result1 = expand((int)(input >>> 32));
long result2 = expand((int)input);
long expand(int inputInt) {
long input = intputInt;
return
(input & 0x000000FF) |
(input & 0x0000FF00) << 8 |
(input & 0x00FF0000) << 16 |
(input & 0xFF000000) << 24;
}