एक जावा इंट हमेशा 32 बिट्स है?


82

क्या जावा का intहमेशा और हर जगह एक 32 बिट हस्ताक्षरित पूर्णांक होगा?


एक इंट वैल्यू का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले बिट्स की संख्या निरंतर Integer.SIZE है, जो कि public static final int SIZE = 32;जावा 1.5 के बाद से निर्दिष्ट है ।
BurnabyRails

जवाबों:


122

हां, यह द जावा लैंग्वेज स्पेसिफिकेशन में परिभाषित है ।

से खंड 4.2: आदिम प्रकारों और मानों :

अभिन्न प्रकार के होते हैं byte, short, int, और long, जिसका मान हैं 8 बिट, 16 बिट, 32-बिट और 64-बिट पर हस्ताक्षर किए two's-पूरक पूर्णांकों, क्रमशः, और char, जिनके मान 16-बिट अहस्ताक्षरित पूर्णांकों UTF-16 कोड का प्रतिनिधित्व कर रहे इकाइयों (§3.1)।

और इसके अलावा धारा 4.2.1 से: इंटीग्रल टाइप और वैल्यू :

अभिन्न प्रकारों के मान निम्नलिखित श्रेणियों में पूर्णांक हैं:

  • बाइट के लिए, -128 से 127 तक, समावेशी
  • संक्षेप में, -32768 से 32767 के लिए, समावेशी
  • उदाहरण के लिए, -2147483648 से 2147483647, समावेशी
  • लंबे समय तक, -9223372036854775808 से 9223372036854775807, समावेशी
  • चार के लिए, '\ u0000' से '\' ओफ़्फ़ 'समावेशी, यानी 0 से 65535 तक

8

ints 32 बिट्स हैं। क्या आपको और अधिक चाहिए, long64 बिट्स हैं।


7

जावा 8 ने अहस्ताक्षरित पूर्णांक के लिए कुछ समर्थन जोड़ा है। आदिम intअभी भी हस्ताक्षरित है, हालांकि कुछ तरीके उन्हें अहस्ताक्षरित के रूप में व्याख्या करेंगे।

निम्नलिखित तरीके जावा 8 में इंटेगर वर्ग में जोड़े गए थे :

  • तुलना की गई (int x, int y)
  • divideUnsigned (इंट डिविडेंड, इंट डिवाइसर)
  • parseUnsignedInt (स्ट्रिंग s)
  • parseUnsignedInt (स्ट्रिंग s, int मूलांक)
  • शेष (प्रस्तावित लाभांश, int भाजक)
  • toUnsignLong (इंट x)
  • toUnsignString (int i)
  • toUnsignedString (int i, int मूलांक)

यहाँ एक उदाहरण है:

public static void main(String[] args) {
    int uint = Integer.parseUnsignedInt("4294967295");
    System.out.println(uint); // -1
    System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}

4

पूरक के रूप में, यदि 64 बिट्स आपकी आवश्यकता को पूरा नहीं करते हैं, तो java.math.BigInteger आज़माएं

यह उन स्थितियों के लिए उपयुक्त है जहां संख्या 64 बिट लंबी सीमा से परे है।

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);
    
}

आउटपुट है:

योग है: 18446744073709551614

अंतर है: -18446744073709551615

उत्पाद है: -85070591730234615856620279821087277056

भागफल: 1 है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.