是否可以反转位移位和加法

Is it possible to reverse a bitshift and addition

是否可以在 java 中扭转这一局面?

byte config = (byte)((X << 6) + Y);

知道 X 是 0、1、2 或 3(2 位),Y 在 0 到 24 之间(5 位)

您可以通过以下方式反转它:

X = (config >> 6) & 0b11
Y = config & 0b11111;

& 0b11& 0b11111bitwise operations。他们分别给你他们申请号码的最后2位和最后5位。

任意长度呢?

当且仅当结果中的每一位来自 x 或(唯一)y 时,您才能反转组合。 结论:你至少需要将 x 移动 y 的长度。