संचालिका पूर्वता - 1

"हाय, बिलाबो!"

"बिलाबो अपने दोस्त का अभिवादन करके खुश है!"

"आज बिलाबो आपको संचालक वरीयता के बारे में बताएंगे। लेकिन पहले वह आपको स्वयं संचालकों के बारे में बताएंगे।"

"आप किस ऑपरेटर के बारे में बात कर रहे हैं?"

"वास्तव में, आप पहले से ही उनसे परिचित हैं। आप शायद नहीं जानते होंगे कि उन्हें ऑपरेटर कहा जाता है।"

"उदाहरण के लिए, कहें कि हमारे पास अभिव्यक्ति  सी = ए + बी है; "

"इसके दो ऑपरेटर हैं: एक अतिरिक्त ऑपरेटर और एक असाइनमेंट ऑपरेटर।"

"दूसरे शब्दों में, संकारक केवल गणितीय चिह्न हैं? जैसे गुणा, भाग और जोड़?"

"हाँ, यह सच है। हालाँकि, मतभेद हैं।"

"मैं आपके लिए ऑपरेटरों को परिभाषित नहीं करूंगा: एक परिभाषा आपको स्मार्ट नहीं बनाएगी। उन्हें कार्रवाई में देखना बेहतर है। ऑपरेटरों को कई समूहों में विभाजित किया जा सकता है, जिसकी हम अभी जांच करेंगे।"

1) " गणितीय ऑपरेटर "

प्रतीक उदाहरण नाम विवरण (यह क्या करता है)
+ a + b अतिरिक्त संचालिका अतिरिक्त संचालिका।
- c - d घटाव ऑपरेटर पहले से दूसरे नंबर को घटाता है।
* a * t गुणन संकारक दो संख्याओं का गुणा करता है।
/ a / b संभाग संचालक पहली संख्या को दूसरी संख्या से विभाजित करता है।
% c % d पहली संख्या को दूसरी संख्या से विभाजित करता है। पहली संख्या को दूसरी संख्या से विभाजित करने के बाद शेषफल की गणना करता है।
- -a यूनरी माइनस चर के चिह्न को इसके विपरीत में बदलता है।
प्लस टू माइनस, और माइनस टू प्लस।
+ +a यूनरी प्लस कुछ भी नहीं बदलता है। इसे यूनरी माइनस ऑपरेटर की प्रशंसा करने के लिए जोड़ा गया था। यह सिर्फ दिखने के लिए है।

"मैं इन्हें स्कूल से पहचानता हूं। मेरे फर्मवेयर में स्कूल पाठ्यक्रम शामिल हैं।"

"लेकिन, उस प्रतिशत चिह्न के साथ क्या है, किसी प्रकार की जादूगरी?"

"यह" विभाजन के बाद शेषफल "ऑपरेटर है। यदि 11 को 5 से विभाजित किया जाता है, तो हमें 2 और शेष 1 प्राप्त होता है। यह 1 11% 5 लिखकर प्राप्त किया जा सकता है;"

"जब आप जावा में पूर्णांकों को विभाजित करते हैं, तो परिणाम भी एक पूर्णांक होता है। विभाजन ऑपरेशन के शेष को आसानी से अनदेखा कर दिया जाता है। यदि हम 8 को 5 से विभाजित करते हैं, तो हमें 1 मिलता है।"

अभिव्यक्ति परिणाम
19 / 10 1 यदि हम 19 को 10 से विभाजित करते हैं, तो परिणाम 1 शेषफल 9 के साथ आता है।
19 % 10 9 यदि हम 19 को 10 से विभाजित करते हैं, तो परिणाम 1 शेषफल 9 के साथ आता है।
2 / 5 0 यदि हम 2 को 5 से विभाजित करते हैं, तो  परिणाम 0 शेषफल 2 के साथ आता है।
16 % 2 0 यदि हम 16 को 2 से विभाजित करते हैं, तो परिणाम 8 शेष 0 के साथ आता है।

"लेकिन दुनिया में हमें शेष राशि की क्या आवश्यकता है?"

"मान लीजिए कि आपको यह जाँचने की आवश्यकता है कि क्या एक पूर्णांक सम है। तब आप लिख सकते हैं:"

if (a % 2 == 0)

"और यदि आपको यह जांचने की आवश्यकता है कि क्या b विषम है, तो आप लिख सकते हैं:"

if (b % 2 == 1)

"या यह जाँचने के लिए कि क्या d 3 से विभाज्य है:"

if (d % 3 == 0)

"दिलचस्प। मैं इसे याद रखूंगा।"

2)  " तुलना संचालक "

प्रतीक उदाहरण नाम विवरण (यह क्या करता है)
< a < b से कम यह देखने के लिए जाँच करता है कि a, b से कम है या नहीं।
<= c <= d से कम या बराबर यह देखने के लिए जाँच करता है कि क्या c, d से कम या उसके बराबर है।
> a > b से अधिक यह देखने के लिए जाँच करता है कि a, b से बड़ा है या नहीं।
>= c >= d इससे बड़ा या इसके बराबर यह देखने के लिए जाँच करता है कि क्या c, d से अधिक या उसके बराबर है।
== i == j के बराबर होती है यह देखने के लिए जाँच करता है कि क्या i, j के बराबर है।
!= a != 0 असमान यह देखने के लिए जाँच करता है कि क्या a शून्य के बराबर नहीं है।

"मैं पहले से ही इन सभी का उपयोग करता हूं।"

"और इन ऑपरेटरों और गणितीय ऑपरेटरों के बीच मुख्य अंतर क्या है?"

"यदि हम दो संख्याओं को जोड़ते हैं, तो हमें एक संख्या मिलती है; लेकिन, यदि हम दो संख्याओं की तुलना करते हैं, तो हमें सत्य या असत्य प्राप्त होता है।"

"यह सही है। तुलना का परिणाम एक " तार्किक मूल्य " मूल्य है, जिसे, जैसा कि आप जानते हैं, बूलियन प्रकार द्वारा दर्शाया गया है। दो संभावनाएँ हैं: सत्य या असत्य।

"हाँ, यह सब स्पष्ट है। मुझे यह पहले से ही पता है।"

3) " लॉजिकल ऑपरेटर्स "

प्रतीक उदाहरण नाम विवरण (यह क्या करता है)
&& a && b और व्यंजक का परिणाम तभी सत्य होता है जब a और b दोनों सत्य हों।
|| c || d या व्यंजक का परिणाम सत्य है यदि या तो a या b सत्य है। वे दोनों या कम से कम एक।
! !a नहीं व्यंजक का परिणाम केवल तभी सत्य होता है जब a असत्य हो।

"तार्किक ऑपरेटरों का उपयोग केवल बूलियन चर या अभिव्यक्तियों के साथ किया जा सकता है।"

उदाहरण विवरण
boolean a = true;
boolean b = true;if (a && b)
यदि स्थिति सत्य है यदि दोनों मान सत्य हैं
दूसरे शब्दों में, यदि a और b दोनों सत्य हैं, तो परिणाम सत्य है ।
boolean a = true;
boolean b = false;if (a || b)
यदि स्थिति सत्य है यदि कम से कम एक मान सत्य है
दूसरे शब्दों में, यदि या तो a या b सत्य है, तो परिणाम सत्य है ।
boolean b = false;

if (!b)

यदि b सत्य नहीं है तो if स्थिति सत्य है।
दूसरे शब्दों में, यदि   b असत्य है , तो परिणाम  सत्य है ।
int a = 2, b = 3, c = 4;

if (a < b && a < c)
if ((a < b) && (a < c))

यदि a, b से छोटा है और a, c से छोटा है, तो व्यंजक का परिणाम सत्य है।
a, b, और c पूर्णांक हैं, लेकिन पूर्णांकों की तुलना करने का परिणाम एक तार्किक मान (सत्य, असत्य) है, जिसका अर्थ है कि हम तार्किक संकारकों का उपयोग कर सकते हैं।

"मैं यह सब पहले से ही जानता हूँ।"

"सचमुच? चलो आगे बढ़ते हैं।"

4) " बिटवाइज़ ऑपरेटर्स "

प्रतीक उदाहरण नाम विवरण (यह क्या करता है)
& a & b और बिटवाइज़ और
| c | d या बिटवाइज़ या
~ ~a नहीं बिटवाइज़ नहीं
^ a ^ b एक्सओआर बिटवाइज़ "अनन्य या"

" बिटवाइज़ ऑपरेटर पूर्णांकों पर बिट-बाय-बिट ऑपरेशन करते हैं।"

"वह क्या है?"

"प्रत्येक संख्या को बिट्स के एक सेट के रूप में दर्शाया जाता है, और फिर परिणाम की गणना निम्नानुसार की जाती है:"

"यदि दोनों संख्याओं का पहला बिट 1 है, तो परिणाम का पहला बिट 1 होगा।"

"यदि दोनों संख्याओं का दूसरा बिट 1 है, तो परिणाम का दूसरा बिट 1 होगा। और इसी तरह।"

"क्या यह सभी बिटवाइज़ ऑपरेटरों के लिए सही है?"

"यह उससे बहुत सरल है। एक बिट में केवल दो मान हो सकते हैं, 0 और 1, है ना?"

"सही।"

"फिर 1 को सत्य और 0 को असत्य मानें। अलग-अलग बिट्स पर संचालन तब लगभग तार्किक संचालन के समान होगा:"

तार्किक अभिव्यक्ति बिटवाइज़ एक्सप्रेशन
सच && सच == सच 1&1 == 1
सत्य और असत्य == असत्य 1&0 == 0
सच || सच == सच 1|1 == 1
सच || असत्य == सत्य 1|0 == 1
झूठा || मिथ्या = मिथ्या 0|0 == 0
झूठा == सच ~0 == 1
सच == झूठा ~1 == 0

"ओह! यह इतना आसान है।"

"हाँ, बस यह मत भूलो कि बिटवाइज़ ऑपरेशन दो नंबरों से संबंधित बिट्स का उपयोग करते हैं।"

"हाँ, मुझे याद है: एक नंबर के पहले बिट को दूसरे के पहले बिट के साथ जोड़ा जाता है, और परिणाम भी पहले बिट के लिए लिखा जाता है। और वही बाकी बिट्स के लिए जाता है।"

"यह सही है। क्या आपके कोई अन्य प्रश्न हैं?"

"XOR और 'अनन्य या' के साथ क्या है?"

"यह केक का एक टुकड़ा है: जब मान भिन्न होते हैं, तो यह सत्य होता है; जब वे समान होते हैं, तो यह असत्य होता है।"

तार्किक अभिव्यक्ति बिटवाइज़ एक्सप्रेशन
सच एक्सओआर सच == झूठा 1 ^ 1 == 0
झूठा एक्सओआर झूठा == झूठा 0 ^ 0 == 0
सच एक्सओआर झूठा == सच 1 ^ 0 == 1
झूठा एक्सओआर सच == सच 0 ^ 1 == 1

यहाँ बिटवाइज़ संचालन के कुछ और उदाहरण दिए गए हैं:

उदाहरण बिट्स के रूप में संख्याएँ बिट्स के रूप में परिणाम परिणाम
5 & 3 0000010 1  और 0000001 1 0000000 1 1
7 & 2 000001 1 1 और 000000 1 0 00000010 2
5 | 9 00000 1 0 1  | 0000 1 00 1 00001101 13
5 ^ 9 00000 101  ^ 00001001 0000 1100 12
~9 ~ 00001001 11110110 246

"धन्यवाद, बिलाबो। अब मुझे पता है।"

"बिटवाइज़ ऑपरेटरों का एक और समूह है, शिफ्ट ऑपरेटर्स:"

5) " शिफ्ट ऑपरेटर्स "

प्रतीक उदाहरण नाम विवरण (यह क्या करता है)
>> a >> b सही बदलाव संख्या a के बिट्स को b अंकों से दाईं ओर शिफ्ट करता है।
<< c << d बाएं पारी संख्या c के बिट्स को d अंकों से बाईं ओर शिफ्ट करता है।
>>> a >>> 2 अहस्ताक्षरित सही बदलाव संख्या a के बिट को 2 अंकों से दाईं ओर शिफ्ट करता है।

"यह किस तरह का स्ट्रीट मैजिक है?"

"यह वास्तव में वास्तव में सरल है। इसे देखें:"

उदाहरण बिट्स के रूप में संख्याएँ बिट्स के रूप में परिणाम परिणाम
10 >> 1 0000 101 0 >> 1 00000 101 5
10 >> 2 0000 101 0 >> 2 000000 10 2
10 << 1 0000 101 0 << 1 000 101 00 20
10 << 2 0000 101 0 << 2 00 101 000 40

"किसी संख्या के बिट्स को 1 से बाईं ओर स्थानांतरित करना संख्या को 2 से गुणा करने के समान है। दो अंकों से स्थानांतरण 4 से गुणा के बराबर है, तीन अंकों से - 8 से गुणा, और इसी तरह।"

"शिफ्टिंग राइट 2, 4, 8, 16, आदि से विभाजित करने के अनुरूप है।"

"लेकिन >>> और >> ऑपरेटरों के बीच क्या अंतर है?"

"वे नकारात्मक संख्याओं के साथ काम करते समय भिन्न होते हैं। ऐसा इसलिए है क्योंकि  हस्ताक्षरित संख्याएँ संकेत को इंगित करने के लिए सबसे बाईं ओर का उपयोग करती हैं। परिणामस्वरूप, दाईं ओर जाने पर एक ऋणात्मक संख्या ऋणात्मक हो जाती है। इसलिए, वे दो अलग-अलग ऑपरेटरों के साथ आए। इसकी जांच - पड़ताल करें:"

अभिव्यक्ति परिणाम विवरण
1 000 1010 >> 1 11 000 101 ऋणात्मक संख्या ऋणात्मक रहती है।
ऋणात्मक संख्याओं के लिए, आने वाले बिट 1s से भरे जाते हैं।
1 000 1010 >> 2 111 000 10
1 000 1010 >> 3 1111 000 1
1 000 1010 >>> 1 01 000 101 ऋणात्मक संख्या अब ऋणात्मक नहीं है। ऋणात्मक संख्याओं के लिए, आने वाले बिट 0 से भरे जाते हैं।
1 000 1010 >>> 2 001 000 10
1 000 1010 >>> 3 0001 000 1

"शिफ्ट चक्रीय नहीं है। बिट्स जो संख्या के बाएं या दाएं किनारे से आगे बढ़ते हैं, उन्हें आसानी से छोड़ दिया जाता है।"

6) " असाइनमेंट ऑपरेटर्स "

"मैं पहले से ही जानता हूं कि असाइनमेंट क्या है। लेकिन आप 'ऑपरेटर' क्यों कहते हैं?"

"क्योंकि उनमें से कई हैं ☺"

ऑपरेटर इसका क्या मतलब है
a += b; a = a + b;
a -= b; a = a - b;
a *= b; a = a * b;
a %= b; a = a % b;
a |= b; a = a | b;
a &= b; a = a & b;

"मुझे लगता है कि आपको तर्क मिलता है।"

7) " इंक्रीमेंट और डिक्रीमेंट ऑपरेटर्स "

नोटेशन उदाहरण विवरण
++ a++;
++b;
संख्या को 1 से बढ़ाता है।
-- d--;
--i;
संख्या या चर को 1 से घटाता है।

"क्या चर के पहले या बाद में दो ऋण चिह्न लगाने में कोई अंतर है?"

"हाँ, वहाँ है, हालांकि बहुत बड़ा नहीं है। यदि इन ऑपरेटरों में से एक के साथ एक चर एक अभिव्यक्ति या असाइनमेंट का एक हिस्सा है, तो अंतर हैं। मैं आपको उदाहरण के द्वारा दिखाऊंगा:"

उदाहरण वास्तव में क्या होता है विवरण
int a = 3;
int b = ++a;
int a = 3;
a = a + 1;
int b = a;
a को पहले 1 से बढ़ाया जाता है, और फिर इसे व्यंजक में प्रयोग किया जाता है।
int a = 3;
int b = a++;
int a = 3;
int b = a;
a = a + 1;
a पहले व्यंजक में प्रयोग किया जाता है, और फिर 1 से बढ़ जाता है।
int a = 3;
return a++;
int a = 3;
int result = a;
a = a + 1;
return result;
फ़ंक्शन 3 लौटाएगा, लेकिन a का मान 1 से बढ़ जाएगा।
int x = 5;
x = ++x + ++x;
int x = 5;
int a = x + 1;// The first term is 6
x = a;
int b = x + 1;// The second term is 7
x = b;
x = a + b;
यहाँ परिणाम 13 है। सबसे पहले, x में 1 की वृद्धि होगी, और यह मान पहले पद को प्रतिस्थापित करेगा, और फिर x में फिर से 1 की वृद्धि होगी।

"वाह! यह अच्छा है!"

"मुझे खुशी है कि आपको यह पसंद आया। लेकिन, अगर कोई अभिव्यक्ति या असाइनमेंट नहीं है, तो कोई मतभेद नहीं हैं:"

"एक्स ++ एक्स = एक्स + 1 के बराबर है।"

"++x x = x + 1 के बराबर है।"

"मैं इसे ध्यान में रखूंगा। धन्यवाद, बिलाबो।"

8)  " टर्नरी ऑपरेटर "

"यह ऑपरेटर केवल एक या दो चर या अभिव्यक्तियों का उपयोग नहीं करता है। यह एक साथ तीन चर या अभिव्यक्तियों का उपयोग करता है:"

नोटेशन समतुल्य कोड:
a ? b : c; if (a)
b
else
c
int min = a < b ? a : b; if (a < b)
min = a;
else
min = b;
return a != null ? a.length : 0; if (a != null)
return a.length;
else
return 0;

"ठीक है, यह बहुत सुविधाजनक है।"

"हाँ। और यह कॉम्पैक्ट है और कोड पठनीय है। इसका उपयोग करने का आनंद लें!"

9) " अन्य "

"कोई फर्क नहीं पड़ता कि आपका संगीत संग्रह कितना व्यवस्थित है, फिर भी आपको" विविध "फ़ोल्डर बनाना होगा।"

"हाँ, जिस किसी को भी कभी संगीत को वर्गीकृत करना पड़ा है वह पूरी तरह से सहमत होगा।"

"तो, तीन और ऑपरेटर हैं जिनके बारे में मैं आपको बताना चाहता हूं:"

नोटेशन उदाहरण विवरण
() (a + b) * c कोष्ठक ऑपरेटर की प्राथमिकता बढ़ाते हैं।
कोष्ठक में दी गई बातों को पहले क्रियान्वित किया जाता है।
[] c [i] = c [i + 1]; अनुक्रमणिका द्वारा सरणी तत्व प्राप्त करें।
. int n = a.length; " डॉट ऑपरेटर " किसी वस्तु के चर और विधियों तक पहुँचता है।

"और, अंत में, यहां एक सारणी है जो ऑपरेटर प्राथमिकता को सारांशित करती है:"

ऑपरेटर्स उदाहरण
सर्वोच्च प्राथमिकता (ऑपरेटरों को इस तालिका में उनके क्रम के अनुसार निष्पादित किया जाता है)
()
[]
.
(a + b)
c [i] = c [i] + 1
++
--
~
!
+
-
i++; ++i;
--j; a--;
~c
!f
return +a;
return -a;
*
/
%
a * b
c / d
a % b
+
-
a + b
c - d
String s = "count"+"35";
>>
<<
>>>
a >> 3
b << 2
c >>> 3
<
<=
>
>=
a < b
a <= b
c > b
c >= b
==
!=
a == 3
a != 0
& a & 7
^ a ^ b
| a | b
&& (a < b) && (a < c)
|| (b != 0) || (c != 0)
? : = a > 0 ? a : -a;
=
*=, /=, %=
-=, +=
<<=. >>=, >>>=
&=, ^=. |=
निम्नतम वरीयता (अंतिम प्रदर्शन)