使用相同的位结构将Char更改为short。 (2的补充问题)

时间:2013-02-01 16:36:38

标签: java char bit-manipulation short

我想将Char更改为具有相同位结构的short。 两者都是16位

我知道如果他们是1s补充我可以使用

,那么短是2s补
if a < 0 {return (short) math.abs a + 2 ^ 15;} else {return (short) a;} //right?

我如何做2s补充否定?

我只是希望能够以与整数相同的方式操纵Char的内部。

如果答案只是添加一个,我将变得情绪激动:)

1 个答案:

答案 0 :(得分:5)

简单的解决方案是

char ch = ...
short s = (short) ch;
char ch2 = (char) s;
// ch == ch2

也许您认为它必须比它更复杂;)

  

我只是希望能够以与整数相同的方式操纵Char的内部。

在这种情况下,你甚至不想要一个short,你想要一个更简单的int

e.g。

// sum all the chars of a string
String s = "Hello World";
int sum = 0;
for(char ch: s.toCharArray())
    sum += ch;
  

如果答案只是添加一个我将变得情绪化

不,甚至不到那个。 :J-

BTW你可以做到

char ch = 'A';
int i = ch + 0;
int j = ch;