मैं जावा में एक स्केन हैश फ़ंक्शन को कार्यान्वित कर रहा हूं, और मुझे एक ऐसे हिस्से में समस्या है जहां कुछ परिवर्धन जहां मॉड्यूल 2^64 है। जैसा कि हम जानते हैं, जावा में लंबे समय तक अधिकतम मूल्य = 2^63-1 है। तो मेरी समस्या यह है कि इस मॉड्यूल ऑपरेशन को कैसे कार्यान्वित करें। (स्केन में सभी ऑपरेशन 64 बिट शब्दों पर हैं।)जावा में लंबे समय तक mod2^64 कैसे करें?
उत्तर
long
जावा में 64-बिट है इसलिए सभी ऑपरेशन पहले से ही 2^64 हैं। ऐसा करने के लिए आपको कुछ भी अतिरिक्त करने की ज़रूरत नहीं है।
क्या समस्या है कि आप नहीं जानते कि हस्ताक्षरित मूल्यों को कैसे संभालना है?
क्या यह आप चाहते हैं या यह कुछ है जिसे आप टालने का प्रयास कर रहे हैं?
धन्यवाद, यह सहायक था। यह वही है जो मैं चाहता हूं। मैं केवल अंत में बिट्स पर काम कर रहा हूं, इसलिए मुझे थोड़ा सा संकेत नहीं है। –
आपके पास एकमात्र समस्या है संचालन के लिए जहां हस्ताक्षर महत्वपूर्ण हैं। जैसे Long.toString (लंबा) एक संकेत मुद्रित करेगा। हालांकि, कई ऑपरेशन बिट्स पर काम करते हैं क्योंकि आप हस्ताक्षरित या हस्ताक्षरित होने की अपेक्षा करेंगे। –
सभी परिचालनों के अंत में, मैं सभी 64 बिट शब्दों को 512 बिट्स के बाइट [] में जोड़ दूंगा, और फिर मैं हेक्स या स्ट्रिंग के रूप में सभी की व्याख्या करूँगा, मुझे अभी तक पता नहीं है। –
BigInteger
ऐसा करने का एक तरीका है।
पीटर के उत्तर के अलावा, मैं महान Guava लाइब्रेरी पर एक नज़र डालने का सुझाव देना चाहता हूं। इसमें एक वर्ग UnsignedLongs है जो लंबे समय तक काम करने के लिए काम करने के लिए कई उपयोगिता कार्यों को प्रदान करता है जो उन्हें बिना हस्ताक्षर किए गए हैं। यह आपके लिए सहायक हो सकता है।
यहां 'बिना हस्ताक्षर किए गए' लेखक का लेखक: पीटर का जवाब अधिकतर हस्ताक्षर किए गए लम्बे समय तक भी सटीक है। विशेष रूप से, +, -, और * सभी सही हैं, भले ही आप लंबे मूल्यों का इलाज करते हों हस्ताक्षर किए गए। इसके अतिरिक्त, आपको 'UnsignedLong' wrapper class' का उपयोग करने में मदद मिल सकती है, जिसे आप 'बिगइंटर' जैसे उपयोग कर सकते हैं लेकिन मोड 2^64 काम करता है। –
- 1. जावा: लंबे समय तक टिमस्टैम्प
- 2. जावा लंबे समय तक बाइनरी
- 3. स्ट्रिंग से जावा में लंबे समय तक कैसे परिवर्तित करें?
- 4. लंबे समय तक
- 5. जावा कनवर्टिंग लंबे समय तक मुद्रा में
- 6. लंबे समय तक कास्ट करें
- 7. लंबे समय तक लाइनों()
- 8. लंबे समय तक XMLGregorian कैलेंडर और लंबे समय तक
- 9. लंबे समय तक प्रेस करें एंड्रॉइड
- 10. स्ट्रिंग को लंबे समय तक परिवर्तित करें
- 11. क्या लंबे और लंबे समय तक पूर्णांक
- 12. लंबे समय तक आइटम हटाएं
- 13. जावा में लंबे समय तक कनवर्ट करना 1 9 70
- 14. बिटवाई "और" लंबे समय तक?
- 15. जावा में हेक्स में नकारात्मक लंबे समय तक कैसे पार्स करें
- 16. लंबे समय तक चलने वाले कार्यों को कैसे निष्पादित करें?
- 17. एंड्रॉइड मानचित्र: मानचित्र पर लंबे समय तक कैसे क्लिक करें?
- 18. NSLog के साथ लंबे समय तक मूल्य कैसे लॉग करें?
- 19. जावा लंबे समय तक हस्ताक्षर किए बिना बराबर?
- 20. जावा लंबे समय से MySQL
- 21. नेटवर्क: सबसे लंबे समय तक मिलान
- 22. लंबे समय तक अपवाद सूची के लिए जावा शैली
- 23. लंबे समय तक ब्राउज़र में एचटीएमएल को कैसे बढ़ाया जाए?
- 24. टाइप ऑब्जेक्ट से लेकर लंबे समय तक
- 25. लंबे समय तक एचडब्ल्यूएनडी (वीएस 8 सी ++)
- 26. सबसे लंबे समय तक सामान्य उपसर्ग ऐरे
- 27. सबसे लंबे समय तक बढ़ने वाले सब्सक्रिप्शन
- 28. MySQL अपडेट (भी) लंबे समय तक लेना
- 29. फेसबुक से लंबे समय तक लाइव टोकन प्राप्त करें
- 30. SQLite लंबे प्रारूपों के लिए लंबे समय तक?
यदि आपको सुपर फास्ट होने की आवश्यकता नहीं है, तो आप ['BigInteger'] (http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html का उपयोग कर सकते हैं) – dasblinkenlight