private void test2() {
// This test takes two shorts and sticks them together in a
// 4 bit 12 bit configuration within a short, it then breaks
// them apart again to see if it worked!
short s0 = 4095;
short s1 = 13;
short sh = (short)((s1 << 12) | s0);
System.out.println(sh);
short[] sa = new short[] {
(short)(sh & 0xFFF),
(short)((sh >>> 12) & 0xF)
};
System.out.println(sa[0]);
System.out.println(sa[1]);
}
これから私が期待するのはこれです。
s0
バイナリではb0000_1111_1111_1111
s1
バイナリではb0000_0000_0000_1101
sh
その後、b1101_1111_1111_1111
前1
は符号で、残りの 15 ビットは値を与えるのでsh
、10 進数では です-24575
が、これはコンソールに出力されるものではありません (これは です-8193
)。
私は何を間違えていますか?