2015-05-15 97 views
1

據我所知,java沒有unsigned int,但是在Java SE 8中,有些方法使用整數數據類型來執行無符號算術。我如何去做轉移到Java中的「unsigned int」?無符號整數Java位轉換

+0

可能重複的[?如何使用在Java 8中的無符號整數](http://stackoverflow.com/questions/25556017/how-to-use-the-unsigned-integer-in-java-8) – Keegan

+0

無符號移位,使用'>>>' –

回答

0

您按照與簽名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 
+0

我明白了,謝謝! – geeceekay

相關問題