मेरे दोस्त ने कहा कि "मॉड" और "शेष" के बीच अंतर हैं।
यदि हां, तो C और C ++ में क्या अंतर हैं? क्या सी में "% 'का अर्थ" मॉड "या" रेम "है?
मेरे दोस्त ने कहा कि "मॉड" और "शेष" के बीच अंतर हैं।
यदि हां, तो C और C ++ में क्या अंतर हैं? क्या सी में "% 'का अर्थ" मॉड "या" रेम "है?
जवाबों:
मापांक और शेष के बीच अंतर है। उदाहरण के लिए:
-21
आधुनिक 4
है 3
क्योंकि -21 + 4 x 6
है 3
।
लेकिन -21
द्वारा विभाजित शेष के साथ 4
देता -5
है -1
।
सकारात्मक मूल्यों के लिए, कोई अंतर नहीं है।
%
गया था : हमेशा शेष था, लेकिन यह मापांक (यानी हमेशा सकारात्मक) भी हो सकता है, क्योंकि C89 में पूर्णांक विभाजन को 0. के बजाय नकारात्मक अनंत की ओर गोल करने की अनुमति दी गई थी। इसलिए C89 में शेष के साथ -5 / 2
हो सकता है , या शेष के साथ , कार्यान्वयन को केवल दस्तावेज करना था। C99 ने लचीलापन हटा दिया, इसलिए अब हमेशा है । -2
-1
-3
1
-5 / 2
-2
-21
मॉड कैसे 4
है 3
? गणना क्यों है -21 + 4 x 6
?
-21 + 4 x 6
0 और 3 के बीच है
क्या सी में "% 'का अर्थ" मॉड "या" रेम "है?
सी में, %
है शेष 1 ।
...,
/
ऑपरेटर का परिणाम बीजगणितीय भागफल है जिसमें किसी भी आंशिक भाग को छोड़ दिया गया है ... (इसे अक्सर "शून्य की ओर झुकाव" कहा जाता है।) C11dr §6.5.5 6
%
ऑपरेटर के परिचालकों में पूर्णांक प्रकार होगा। C11dr 116.5.5 2
/
ऑपरेटर का परिणाम दूसरे द्वारा पहले ऑपरेंड के विभाजन से भागफल है;%
ऑपरेटर का परिणाम शेष है ... C11dr .56.5.5 5
"मॉड" और "शेष" के बीच क्या अंतर है?
सी "मॉड" को परिभाषित नहीं करता है, जैसे कि यूक्लिडियन डिवीजन या अन्य मोडुलो में उपयोग किए जाने वाले पूर्णांक मापांक फ़ंक्शन । "यूक्लिडियन मॉड" नकारात्मक होने पर सी के a%b
ऑपरेशन से भिन्न होता है a
।
// a % b
7 % 3 --> 1
7 % -3 --> 1
-7 % 3 --> -1
-7 % -3 --> -1
मोडुलो यूक्लिडियन डिवीजन के रूप में
7 modulo 3 --> 1
7 modulo -3 --> 1
-7 modulo 3 --> 2
-7 modulo -3 --> 2
उम्मीदवार मोडुलो कोड:
int modulo_Euclidean(int a, int b) {
int m = a % b;
if (m < 0) {
// m += (b < 0) ? -b : b; // avoid this form: it is UB when b == INT_MIN
m = (b < 0) ? m - b : m + b;
}
return m;
}
फ़्लोटिंग पॉइंट के बारे में ध्यान दें: double fmod(double x, double y)
भले ही "fmod" कहा जाता है, यह यूक्लिडियन डिवीजन "मॉड" के समान नहीं है, लेकिन सी पूर्णांक के समान है:
fmod
कार्यों की गणना की फ्लोटिंग प्वाइंट शेषx/y
। C11dr 117.12.10.1 2
fmod( 7, 3) --> 1.0
fmod( 7, -3) --> 1.0
fmod(-7, 3) --> -1.0
fmod(-7, -3) --> -1.0
विघटन : C में एक समान नाम वाला फ़ंक्शन भी है double modf(double value, double *iptr)
जो तर्क मान को अभिन्न और भिन्नात्मक भागों में तोड़ता है, जिनमें से प्रत्येक का तर्क के समान प्रकार और संकेत है। यह नाम समानता को छोड़कर यहां "आधुनिक" चर्चा के साथ बहुत कम है।
1 C99 से पहले, C की परिभाषा %
अभी भी विभाजन से शेष थी , फिर भी /
नकारात्मक उद्धरणों को "शून्य की ओर झुकाव" के बजाय गोल करने की अनुमति दी। देखें कि आपको C89 में पूर्णांक विभाजन के लिए अलग-अलग मान क्यों मिलते हैं? । इस प्रकार कुछ पूर्व C99 संकलन के साथ, %
कोड यूक्लिडियन डिवीजन "मॉड" की तरह कार्य कर सकता है। उपरोक्त modulo_Euclidean()
इस वैकल्पिक पुराने स्कूल के साथ शेष भी काम करेगा।
मापांक, मॉड्यूलर अंकगणित में जैसा कि आप जिक्र कर रहे हैं, अंकगणित विभाजन के बाद बचा हुआ या शेष मूल्य है। यह आमतौर पर शेष के रूप में जाना जाता है। % औपचारिक रूप से C / C ++ में शेष संचालक है। उदाहरण:
7 % 3 = 1 // dividend % divisor = remainder
चर्चा के लिए क्या शेष है, इस% ऑपरेशन के लिए नकारात्मक इनपुट का इलाज कैसे करें। आधुनिक सी और सी ++ इस ऑपरेशन के लिए एक हस्ताक्षरित शेष मूल्य का उत्पादन करते हैं जहां परिणाम का संकेत हमेशा लाभांश इनपुट के संकेत के बिना लाभांश इनपुट से मेल खाता है ।
C और C ++ और कई भाषाओं में, %
शेष नहीं है मापांक ऑपरेटर।
उदाहरण के लिए ऑपरेशन -21 / 4
में पूर्णांक भाग होता है -5
और दशमलव भाग होता है -.25
। शेष भाग अंश का अंश अंश है, इसलिए हमारा शेष भाग है-1
। जावास्क्रिप्ट शेष ऑपरेटर का उपयोग करता है और इसकी पुष्टि करता है
console.log(-21 % 4 == -1);
मापांक ऑपरेटर ऐसा है जैसे आपके पास "घड़ी" थी। क्रमशः 12, 3 बजे, 6 बजे, और 9 बजे के पदों के मानों 0, 1, 2, और 3 के साथ एक चक्र की कल्पना करें। घड़ी के चारों ओर भागफल-वार समय-समय पर मोड़ना हमें हमारे मापांक ऑपरेशन के परिणाम पर, या, एक नकारात्मक भागफल, प्रति-घड़ी, उपज 3 के साथ हमारे उदाहरण में।
नोट: मापांक हमेशा भाजक के समान चिन्ह होता है और भागफल के समान चिन्ह शेष होता है। भाजक और शेष को जोड़ना जब शेष कम से कम एक ऋणात्मक पैदावार होता है।
गणित में मोडुलो ऑपरेशन का परिणाम यूक्लिडियन डिवीजन का शेष है। हालांकि, अन्य सम्मेलन संभव हैं। कंप्यूटर और कैलकुलेटर में संख्याओं के भंडारण और प्रतिनिधित्व के विभिन्न तरीके हैं; इस प्रकार मोडुलो ऑपरेशन की उनकी परिभाषा प्रोग्रामिंग भाषा और / या अंतर्निहित हार्डवेयर पर निर्भर करती है।
7 modulo 3 --> 1
7 modulo -3 --> -2
-7 modulo 3 --> 2
-7 modulo -3 --> -1
0 ≤ r < |b|
जो उर्फ शेष का अर्थ है "सापेक्ष आपरेशन।" हमेशा कम से कम 0. क्या परिभाषा है जो आप -2 और -1 में परिणाम का उपयोग कर रहे हैं?
a%b
और सकारात्मक a modulo b
होने पर एक ही अर्थ है a,b
। C99 %
नकारात्मक मानों के साथ सटीक रूप से परिभाषित होता है। सी इस "शेष '।" कहता है Modulo "ऋणात्मक मानों के विषय में दुनिया में विभिन्न परिभाषाएं हैं सी कल्पना ही उपयोग करता है।" सापेक्ष "सकारात्मक संख्या के संदर्भ में।