这是我的代码:
long x1 = -123;
long y1 = -312;
long x2 = -111;
long y2 = -112;
long packed = x1 | y1 << 15 | x2 << 30 | y2 << 45;
Debug.log("x1:" + ((packed) & 0b111111111111111));
Debug.log("y1:" + ((packed >> 15) & 0b111111111111111));
Debug.log("x2:" + ((packed >> 30) & 0b111111111111111));
Debug.log("y2:" + ((packed >> 45) & 0b111111111111111));
我需要 x1、x2、x3、x4 达到 16384(2^14)。所以加上 +- 号,总共有 15 位。为什么我得到不正确的值?