1
據我所知,java沒有unsigned int,但是在Java SE 8中,有些方法使用整數數據類型來執行無符號算術。我如何去做轉移到Java中的「unsigned int」?無符號整數Java位轉換
據我所知,java沒有unsigned int,但是在Java SE 8中,有些方法使用整數數據類型來執行無符號算術。我如何去做轉移到Java中的「unsigned int」?無符號整數Java位轉換
您按照與簽名int
相同的方式執行所有按位操作,使用>>>
右移。 「未簽名」功能僅用於輸出和轉換,它們不影響內部比特表示。
例如:
int i = Integer.MAX_VALUE/1024 - 1023;
System.out.println(Integer.toUnsignedString(i) + "=" + Integer.toBinaryString(i));
i = i >>> 10;
System.out.println(Integer.toUnsignedString(i) + "=" + Integer.toBinaryString(i));
i = i << 21;
System.out.println(Integer.toUnsignedString(i) + "=" + Integer.toBinaryString(i));
得到的輸出:
2096128=111111111110000000000 // 11 ones, 10 zeros
2047=11111111111 // 11 ones, 0 zeros
4292870144=11111111111000000000000000000000 // 11 ones, 21 zeros
的
我明白了,謝謝! – geeceekay
可能重複的[?如何使用在Java 8中的無符號整數](http://stackoverflow.com/questions/25556017/how-to-use-the-unsigned-integer-in-java-8) – Keegan
無符號移位,使用'>>>' –