短い型変数は16ビットの符号付き整数であることを学びましたが、
short n = -1;
System.out.println(Integer.toBinaryString(n));
出力:
11111111111111111111111111111111
結果には32ビットが含まれます。なぜですか。
短い型変数は16ビットの符号付き整数であることを学びましたが、
short n = -1;
System.out.println(Integer.toBinaryString(n));
出力:
11111111111111111111111111111111
結果には32ビットが含まれます。なぜですか。
その理由はInteger
、32ビット型を表し、引数をtoBinaryString()
取るためです。メソッドを呼び出す前に、引数がにプロモートされint
ます。short
int
あなたが呼び出すとき、あなたshort
は暗黙のうちににキャストされます:int
toBinaryString()
public static String Integer.toBinaryString(int i)
下位16ビットを印刷するには、を使用できます。
System.out.println(Integer.toBinaryString(n & 0xFFFF));
ゼロパッティング用。
System.out.println(Integer.toBinaryString(0x10000 + (n & 0xFFFF)).substring(1));