Java inther zaman ve her yerde 32 bitlik işaretli bir tamsayı mı olacak?
Yanıtlar:
Evet, Java Dil Belirtiminde tanımlanmıştır .
Gönderen Bölüm 4.2: İlkel Türleri ve Değerleri :
Entegre türleri
byte,short,intvelong, Değerleri 8-bit, 16-bit, 32-bit, 64-bit işaretli two's-tamamlayıcı sırasıyla tamsayı, vechardeğerleri, 16-bit işaretsiz tamsayı UTF-16 kod temsil eden birimler (§3.1).
Ve ayrıca Bölüm 4.2.1'den: İntegral Türleri ve Değerler :
İntegral türlerinin değerleri, aşağıdaki aralıklarda bulunan tam sayılardır:
- Bayt için -128'den 127'ye kadar (dahil)
- Kısaca, -32768'den 32767'ye kadar
- İnt için, -2147483648 ile 2147483647 arası, dahil
- Uzun için, -9223372036854775808'den 9223372036854775807'ye kadar, dahil
- Karakter için "\ u0000" ile "\ uffff" dahil, yani 0 ile 65535 arası
Java 8, işaretsiz tamsayılar için bazı destek ekledi. İlkel inthala işaretlidir, ancak bazı yöntemler onları işaretsiz olarak yorumlayacaktır.
Java 8'de Integer sınıfına aşağıdaki yöntemler eklenmiştir :
İşte örnek bir kullanım:
public static void main(String[] args) {
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(uint); // -1
System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}
Tamamlayıcı olarak, 64 bit uzunluğundaki gereksinimlerinizi karşılamıyorsa, java.math.BigInteger'ı deneyin .
Sayının 64 bit uzunluğunun dışında olduğu durumlar için uygundur.
public static void main(String args[]){
String max_long = "9223372036854775807";
String min_long = "-9223372036854775808";
BigInteger b1 = new BigInteger(max_long);
BigInteger b2 = new BigInteger(min_long);
BigInteger sum = b1.add(b1);
BigInteger difference = b2.subtract(b1);
BigInteger product = b1.multiply(b2);
BigInteger quotient = b1.divide(b1);
System.out.println("The sum is: " + sum);
System.out.println("The difference is: " + difference);
System.out.println("The product is: " + product);
System.out.println("The quotient is: " + quotient);
}
Çıktı:
Toplam: 18446744073709551614
Fark şudur: -18446744073709551615
Ürün: -85070591730234615856620279821087277056
Bölüm: 1
public static final int SIZE = 32;Java 1.5'ten beri belirtilen sabit Tamsayı.SIZE'dir .