मैं एक मौजूदा नेटवर्क प्रोटोकॉल को कार्यान्वित करने की कोशिश कर रहा हूं जो अनसigned डेटाटाइप का भारी उपयोग करता है, जो जावा द्वारा समर्थित नहीं हैं। मैं वर्तमान में जो करता हूं वह प्रत्येक डेटाटाइप के लिए होता है, अगले बड़े को चुना जाता है ताकि हस्ताक्षरित संख्या सकारात्मक क्षेत्र में फिट हो और फिर वांछित प्रभाव प्राप्त करने के लिए बाइट स्थानांतरण का उपयोग कर सके। चूंकि यह बहुत ग़लत त्रुटि है और एक हस्ताक्षरित लंबे समय तक मुझे बिगइन्टर का उपयोग करना है जो विस्तारित प्रकारों से बहुत भारी है, मैं सोच रहा था कि यह हासिल करने का कोई बेहतर तरीका नहीं है?जावा में बिना हस्ताक्षर किए गए int
13
A
उत्तर
16
आप जो कर रहे हैं उसके आधार पर, आप 32-बिट मान के रूप में लंबे समय तक 64-बिट मान और int के रूप में लंबे समय तक इलाज कर सकते हैं। ज्यादातर ऑपरेशन esp पढ़ते हैं INT/Long writeInt/लंबे समय तक साइन इन को अनदेखा करके ही काम करते हैं।
क्या आप इन नंबरों पर किए गए ऑपरेशन का एक उदाहरण दे सकते हैं और शायद हम सुझाव दे सकते हैं कि प्रकार का विस्तार किए बिना वही काम कैसे करेगा।
उदाहरण के लिए, ++, -, +, -, *, ==,! =, < < सभी हस्ताक्षर के बावजूद समान काम करते हैं (यानी एक ही जवाब दें)। >> >> >>
यह /,%,>,> = <, < = और प्रिंटिंग फ़ंक्शंस जो हस्ताक्षरित मूल्य मानते हैं, लेकिन आप इनके आसपास काम करने में सक्षम होना चाहिए (यदि आप उपयोग करते हैं इन)।
उदा
long unsignedA =
long unsignedB =
boolean greater = unsignedA + Long.MIN_VALUE > unsignedB + Long.MIN_VALUE
संपादित करें: यह क्यों काम करता है? आंशिक रूप से क्योंकि जावा में अतिप्रवाह/अंडरफ्लो अपवाद नहीं हैं।
उदा
byte unsignedA = 0;
unsignedA--;
// unsignedA == FF, is this -1 or 255? Java assumes the former but you assume the later
byte unsignedB = unsignedA * unsignedA;
// unsignedB is -1 * -1 = 1 or (byte) (255*255) = (byte) 65525 = 1.
संबंधित मुद्दे
- 1. बिना हस्ताक्षर किए गए Int
- 2. बिना हस्ताक्षर किए गए चार *
- 3. जेएनआई: बिना हस्ताक्षर किए गए int को जिंट
- 4. PHP बिना हस्ताक्षर किए गए दाएं शिफ्ट -
- 5. बिना हस्ताक्षर किए गए चार में 4 बिट्स कैसे बदलें?
- 6. हस्ताक्षर किए गए चार *
- 7. जावा हस्ताक्षर किए गए जार को एकाधिक हस्ताक्षर एल्गोरिदम
- 8. डिफ़ॉल्ट int प्रकार: हस्ताक्षरित या हस्ताक्षर किए गए?
- 9. जेपीए और हाइबरनेट में बिना हस्ताक्षर किए गए इंट
- 10. जावा रिटर्न का उपयोग कर फेसबुक पर हस्ताक्षर किए गए हस्ताक्षर किए गए JSON
- 11. हस्ताक्षर किए गए पूर्णांक अंडरफ़्लो
- 12. mysql tinyint हस्ताक्षर किए गए
- 13. जावा लंबे समय तक हस्ताक्षर किए बिना बराबर?
- 14. सी बिना हस्ताक्षर किए गए int को ऋणात्मक मूल्य प्रदान करना?
- 15. लूप के लिए सी और सी ++ के लिए उपयोग किए गए हस्ताक्षर किए गए int की बजाय int क्यों है?
- 16. बीकोड कोडित दशमलव (बीसीडी) को बिना हस्ताक्षर किए गए पूर्णांक
- 17. बिना हस्ताक्षर किए गए char को stdterpret_cast के बिना std :: string में प्राप्त करने का तरीका?
- 18. हस्ताक्षर/हस्ताक्षरित शॉर्ट/int
- 19. हस्ताक्षर किए गए शून्य लिनक्स बनाम विंडोज
- 20. 8 अंकों वाले हेक्साडेसिमल संख्या में हस्ताक्षर किए गए int को कैसे प्रारूपित करें?
- 21. सी ++: साइन किए गए/हस्ताक्षरित मेल नहीं खाते जब केवल हस्ताक्षर किए गए प्रकार
- 22. अगर कथन की तुलना में हस्ताक्षरित हस्ताक्षर किए गए हैं?
- 23. डीसीपीयू -16 में अंकगणित/नियंत्रण-प्रवाह पर हस्ताक्षर किए गए?
- 24. पीकेसीएस 7 हस्ताक्षर किए गए सीएमएस में साइनिंग समय जोड़ें?
- 25. हस्ताक्षर किए गए चार सूचक का उपयोग कब करें
- 26. फ़ंक्शन पॉइंटर बिना टाइप किए गए
- 27. एसएसई निर्देश में बिना हस्ताक्षर किए गए स्वामित्व का क्या अर्थ है?
- 28. जावा के हस्ताक्षर किए गए सही शिफ्ट ऑपरेटर के सी # समतुल्य >>>
- 29. मैक्रो यह जांचने के लिए कि एक पूर्णांक प्रकार पर हस्ताक्षर किए गए हैं या हस्ताक्षर किए गए हैं
- 30. बिना हस्ताक्षर किए गए char का परिणाम << unsigned char हस्ताक्षरित नहीं है char
एचएम, जो वादा करता है, मैं केवल एक इनपुटस्ट्रीम बनाने की उम्मीद कर रहा था और उस पर से प्रोग्राम में चारों ओर खींचने की बजाय अपेक्षाओं के साथ काम करता हूं। समस्या यह है कि अधिकांश भाग के लिए वे आईपी पते, संस्करण संख्याओं (बहुत भारी>><, <= and > =) का प्रतिनिधित्व करते हैं, क्रिप्टोशैश (शायद कोई समस्या नहीं है, और टाइमस्टैम्प (फिर तुलना में भारी)। – cdecker
आईपी पते के लिए, आपको बाउजिंग चाल का उपयोग करना होगा या लंबे समय तक विस्तार करना होगा। लंबे टाइमस्टैम्प के लिए, आपको यह मानने में सक्षम होना चाहिए कि वे 0 और Long.MAX_VALUE के बीच हैं यदि वे मिलीसेकंड में हैं। क्या आपके संस्करण संख्या शीर्ष बिट का उपयोग करते हैं? क्या आप एक उदाहरण दे सकते हैं जो करता है? (यदि ऐसा है तो आपको तुलनात्मक पूर्वाग्रह की भी आवश्यकता है) –
हस्ताक्षर किए गए लंबे मिली-सेकंड टाइमस्टैम्प वर्ष 2 9 2,471,208 तक सीमित हैं यदि आप 1 ईसा पूर्व (कोई वर्ष 0 नहीं था), –