मैंने हाल ही में जावा कोर्स (1 सप्ताह का क्रैश कोर्स) किया है, और हमने कुछ बाइनरी गणित को कवर किया है।यूनरी "~" ऑपरेटर - वास्तव में क्या हो रहा है?
यह एकल ~ ऑपरेटर (टिल्ड मुझे लगता है कि यह कहा जाता है?) इस प्रकार हमें समझाया गया था:
यह में थोड़ा पैटर्न एक "1" और हर "1" में बदल हर "0" उलट एक " 0 "। उदा। एक बाइट के लिए 8 बिट्स हैं। यदि आपके पास निम्न बाइट है: 00000000 उलटा मूल्य 11111111 बन जाएगा।
उपर्युक्त स्पष्टीकरण स्पष्ट और संक्षेप में है, और पूरी तरह से मुझे समझ में आता है। जब तक, मैं इसे लागू करने की कोशिश नहीं करता।
को देखते हुए यह:
byte x = 3;
byte y = 5;
System.out.println(~x);
System.out.println(~y);
उत्पादन होता है:
-4
-6
मैं बहुत कि यह कैसे होता बारे में उलझन में हूँ।
यदि बाइनरी में +3 11 है, तो इसका उलटा 00 होगा, जो स्पष्ट रूप से -3 नहीं है।
लेकिन जैसा कि बाइट में 8 बिट्स हैं, तो 0030011 के रूप में +3 के द्विआधारी प्रतिनिधित्व को नहीं लिखा जाना चाहिए?
जो 11111100 बनने के लिए उलटा होगा। दशमलव मान में वापस परिवर्तित किया जाएगा यह 252 होगा। यदि आप +3 के रूप में +3 लिखते हैं, तो यह वास्तव में 100 में परिवर्तित होता है, जो +4 है, लेकिन फिर आप कैसे करते हैं पता है कि यह एक नकारात्मक संख्या है?
यदि आप 0011 का प्रयास करते हैं, जो 1100 में परिवर्तित होता है, जो कि यदि आप पहली बिट को साइन के रूप में उपयोग करते हैं, तो यह वास्तव में -4 बन जाता है।
आह - इसलिए इस बिंदु पर मैंने सोचा कि मैं कहीं और हो रहा था।
लेकिन तब मैं = y के दूसरे मूल्य 5.
हम इस लिख सकता हूँ कैसे मिल गया? एक ही तर्क का उपयोग करते हुए, +5 बाइनरी 0101 में परिवर्तित हो जाता है, जो 1010 में बदल जाता है।
और अब यह है कि मैं बहुत उलझन में हूं। यह या तो 2 के हस्ताक्षरित मान, या +10 दशमलव के एक हस्ताक्षरित मान का प्रतिनिधित्व करने के लिए लग रहा है? इनमें से कोई भी नहीं -6 मैं मुद्रित हो रहा हूं।
फिर, यदि मैं बाइट के 8 अंकों तक लम्बाई बढ़ाता हूं, तो +5 00000101 है, जो उलटा हुआ 11111010 हो जाता है। और मुझे वास्तव में इसे -6 में बदलने का कोई तरीका नहीं मिल रहा है।
क्या कोई इसे समझता है, क्योंकि मुझे नहीं पता कि यहां क्या हो रहा है और जितना अधिक संख्या मैं अधिक भ्रमित हूं, मैं बनता हूं। शायद यह थोड़ा ऑपरेटर संकेत को देखकर पसंद नहीं है .. देखें इस प्रदर्शन :-(
जावा में सभी अभिन्न संख्यात्मक प्रकार * हस्ताक्षरित * हैं। –
@MarkoTopolnik char एक संख्यात्मक प्रकार है, और हस्ताक्षरित है। –
2 के पूरक होने के बारे में सभी बहुत ही उपयोगी उत्तर देने के बाद, मुझे यह वीडियो मिला जो इसे काफी अच्छी तरह से समझाता है। सभी उत्तर देने वालों का धन्यवाद। http://www.youtube.com/watch?v=Hof95YlLQk0&NR=1&feature=endscreen –