4

我知道用Integer.toBinaryString(355) = 0000000101100011and 将十进制转换为二进制Integer.toBinaryString(-355) = 1111111010011101(我取 32 位结果的低 16 位)。

我想做的是另一种方式,采用 16 位二进制补码二进制字符串并转换为十进制。

IE

0000000000110010 =  50
1111111111001110 = -50

而不是1111111111001110 = 65486

我该怎么做?

4

2 回答 2

5

您需要将结果读入short.

short res = (short)Integer.parseInt("1111111111001110", 2);
System.out.println(res);

打印-50

于 2013-04-05T15:35:39.133 回答
2

使用short? 它们占用 16 位。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

于 2013-04-05T15:35:26.977 回答