我想将 Char 更改为具有相同位结构的 short 。两者都是16位
我知道,如果它们是我可以使用的 1s 补码,那么 short 是 2s 补码
if a < 0 {return (short) math.abs a + 2 ^ 15;} else {return (short) a;} //right?
我如何做到这一点,以 2s 补负?
我只是希望能够像操纵 Integer 一样操纵 Char 的内部结构。
如果答案只是添加一个,我会变得情绪化:)
我想将 Char 更改为具有相同位结构的 short 。两者都是16位
我知道,如果它们是我可以使用的 1s 补码,那么 short 是 2s 补码
if a < 0 {return (short) math.abs a + 2 ^ 15;} else {return (short) a;} //right?
我如何做到这一点,以 2s 补负?
我只是希望能够像操纵 Integer 一样操纵 Char 的内部结构。
如果答案只是添加一个,我会变得情绪化:)
简单的解决方案是
char ch = ...
short s = (short) ch;
char ch2 = (char) s;
// ch == ch2
也许你想象它必须比它更复杂;)
我只是希望能够像操纵 Integer 一样操纵 Char 的内部结构。
在那种情况下,你甚至不需要 a short
,你想要一个int
更简单的。
例如
// sum all the chars of a string
String s = "Hello World";
int sum = 0;
for(char ch: s.toCharArray())
sum += ch;
如果答案只是加一个,我会变得情绪化
不,甚至更少。:j
顺便说一句,你可以做
char ch = 'A';
int i = ch + 0;
int j = ch;