Modulo
کمپیوٹنگ میں، ماڈیولو آپریشن ایک نمبر کو دوسرے سے تقسیم کرنے کے بعد، تقسیم کے بقیہ یا دستخط شدہ بقیہ کو واپس کرتا ہے (جسے آپریشن کا ماڈیولس کہا جاتا ہے)۔ دو مثبت اعداد کو دیکھتے ہوئے اور، ماڈیولو (اکثر مختصر طور پر) یوکلڈین ڈویژن کا بقیہ ہے، جہاں ڈیویڈنڈ ہے اور تقسیم کنندہ ہے۔ مثال کے طور پر، اظہار "5 موڈ 2" کا اندازہ 1 سے ہوتا ہے، کیونکہ 5 کو 2 سے تقسیم کرنے پر 2 کا حصص اور 1 کا بقیہ ہوتا ہے، جبکہ "9 موڈ 3" کا اندازہ 0 سے ہوتا ہے، کیونکہ 9 کو 3 سے تقسیم کرنے پر 3 کا حصص اور بقیہ 0 ہوتا ہے۔ اگرچہ عام طور پر انٹیجرز کے ساتھ انجام دیا جاتا ہے اور دونوں ہوتے ہیں، بہت سے کمپیوٹنگ سسٹم اب دیگر اقسام کے عددی آپریڈز کی اجازت دیتے ہیں۔ انٹیجر ماڈیولو آپریشن کے لیے اقدار کی حد 0 سے ہے (موڈ 1 ہمیشہ 0 ہوتا ہے ؛ غیر متعین ہوتا ہے، صفر سے تقسیم ہونے کی وجہ سے)۔ جب بالکل ایک یا منفی ہوتا ہے، تو بنیادی تعریف ٹوٹ جاتی ہے، اور پروگرامنگ زبانیں اس بات میں مختلف ہوتی ہیں کہ ان اقدار کی وضاحت کیسے کی جاتی ہے۔ تعریف کے متغیرات ریاضی میں، ماڈیولو آپریشن کا نتیجہ ایک مساوات کلاس ہے، اور کلاس کے کسی بھی رکن کو نمائندہ کے طور پر منتخب کیا جا سکتا ہے ؛ تاہم، معمول کا نمائندہ سب سے کم مثبت بقایا ہوتا ہے، سب سے چھوٹا غیر منفی عدد جو اس کلاس سے تعلق رکھتا ہے (یعنی، یوکلڈین ڈویژن کا بقیہ)۔ تاہم، دیگر کنونشن ممکن ہیں۔ کمپیوٹرز اور کیلکولیٹرز میں نمبروں کو ذخیرہ کرنے اور ان کی نمائندگی کرنے کے مختلف طریقے ہیں۔ اس طرح ماڈیولو آپریشن کی ان کی تعریف پروگرامنگ زبان یا بنیادی ہارڈ ویئر پر منحصر ہے۔ تقریبا تمام کمپیوٹنگ سسٹمز میں، حصص اور بقیہ کو بٹا کر تقسیم کرنا مندرجہ ذیل شرائط کو پورا کرتا ہے: اگر بقیہ غیر صفر ہے تو یہ اب بھی ایک علامت کو مبہم چھوڑتا ہے: بقیہ کے لیے دو ممکنہ انتخاب ہوتے ہیں، ایک منفی اور دوسرا مثبت، اور حصص کے لیے دو ممکنہ انتخاب ہوتے ہیں۔ نمبر تھیوری میں، مثبت بقیہ کو ہمیشہ منتخب کیا جاتا ہے، لیکن کمپیوٹنگ میں، پروگرامنگ زبانیں زبان اور یا کی علامتوں کے لحاظ سے انتخاب کرتی ہیں۔ مثال کے طور پر، معیاری پاسکل اور ALGOL 68، منفی تقسیم کاروں کے لیے بھی مثبت بقیہ (یا 0) دیتے ہیں، اور کچھ پروگرامنگ زبانیں، جیسے کہ C90، جب ان میں سے کوئی ایک منفی ہو تو اسے عمل درآمد پر چھوڑ دیتے ہیں (تفصیلات کے لیے نیچے ٹیبل دیکھیں)۔ ماڈیولو 0 زیادہ تر سسٹمز میں غیر متعین ہے، حالانکہ کچھ اسے اس طرح بیان کرتے ہیں۔ اگر ڈیویڈنڈ اور ڈیویزر دونوں مثبت ہیں، تو کٹی ہوئی، فرش اور یوکلیڈین تعریفیں متفق ہیں۔ اگر ڈیویڈنڈ مثبت ہے اور ڈیویزر منفی ہے، تو کٹی ہوئی اور یوکلڈین تعریفیں متفق ہیں۔ اگر ڈیویڈنڈ منفی ہے اور ڈیویزر مثبت ہے، تو فلورڈ اور یوکلڈین تعریفیں متفق ہیں۔ اگر ڈیویڈنڈ اور ڈیویزر دونوں منفی ہیں، تو کٹی ہوئی اور فرش شدہ تعریفیں متفق ہیں۔ جیسا کہ لیجن نے بیان کیا ہے، تاہم، کٹی ہوئی تقسیم شناخت کو مطمئن کرتی ہے۔ نوٹیشن کچھ کیلکولیٹرز میں فنکشن بٹن ہوتا ہے، اور بہت سی پروگرامنگ زبانوں میں اسی طرح کا فنکشن ہوتا ہے، مثال کے طور پر۔ کچھ ایسے تاثرات کی بھی حمایت کرتے ہیں جو "٪"، "موڈ"، یا "موڈ" کو ماڈیولو یا ریمائنڈر آپریٹر کے طور پر استعمال کرتے ہیں، جیسے یا۔ اسی طرح کے فنکشن کی کمی والے ماحول کے لیے، اوپر کی تین تعریفوں میں سے کوئی بھی استعمال کیا جا سکتا ہے۔ عام نقصانات جب ماڈیولو آپریشن کے نتیجے میں ڈیویڈنڈ (کٹی ہوئی تعریف) کی علامت ہوتی ہے، تو یہ حیرت انگیز غلطیوں کا باعث بن سکتا ہے۔ مثال کے طور پر، یہ جانچنے کے لیے کہ آیا کوئی عدد عجیب ہے، کوئی یہ جانچنے کی طرف مائل ہو سکتا ہے کہ آیا بقیہ بٹا 2 1 کے برابر ہے: بول is _ od (int n) ہے لیکن ایسی زبان میں جہاں ماڈیولو میں ڈیویڈنڈ کی علامت ہے، یہ غلط ہے، کیونکہ جب (ڈیویڈنڈ) منفی اور عجیب ہوتا ہے، تو موڈ 2 −1 واپس کرتا ہے، اور فنکشن غلط لوٹتا ہے۔ ایک درست متبادل یہ جانچنا ہے کہ بقیہ 0 نہیں ہے (کیونکہ بقیہ 0 علامتوں سے قطع نظر ایک ہی ہے): بول اس حقیقت کو استعمال کرنا ہے کہ کسی بھی عجیب نمبر کے لیے بقیہ 1 یا-1 ہو سکتا ہے: بول is _ od (int n) {واپسی n ٪ 2 = = 1 | n ٪ 2 = =-1 ؛} ایک آسان متبادل یہ ہے کہ n ٪ 2 کے نتیجے کو اس طرح سمجھا جائے جیسے کہ یہ ایک بولین ویلیو ہو، جہاں کوئی غیر صفر ویلیو درست ہو: بول _ od (int n) {واپسی n ٪ 2 ؛} کارکردگی کے مسائل ماڈیولو آپریشنز کو اس طرح نافذ کیا جا سکتا ہے کہ اس کے ساتھ تقسیم ہو۔ خاص معاملات کے لیے، کچھ ہارڈ ویئر پر، تیز تر متبادل موجود ہیں۔ مثال کے طور پر، 2 کی طاقتوں کے ماڈیولو کو متبادل طور پر بٹ وائز اینڈ آپریشن کے طور پر ظاہر کیا جا سکتا ہے (فرض کریں کہ یہ ایک مثبت عدد ہے، یا غیر رنکیٹنگ تعریف کا استعمال کرتے ہوئے): x% 2n = = x اور (2n-1) مثالیں: ان آلات اور سافٹ ویئر میں جو ماڈیولو سے زیادہ مؤثر طریقے سے بٹ وائز آپریشنز کو نافذ کرتے ہیں، ان متبادل شکلوں کے نتیجے میں تیزی سے حساب کتاب ہو سکتا ہے۔ مرتب کی اصلاح اس فارم کے تاثرات کو پہچان سکتی ہے جہاں دو کی طاقت ہے اور انہیں خود بخود اس طرح نافذ کر سکتی ہے، جس سے پروگرامر کارکردگی سے سمجھوتہ کیے بغیر واضح کوڈ لکھ سکتا ہے۔ یہ آسان اصلاح ان زبانوں کے لیے ممکن نہیں ہے جن میں ماڈیولو آپریشن کے نتیجے میں ڈیویڈنڈ (بشمول C) کی علامت ہوتی ہے، جب تک کہ ڈیویڈنڈ غیر دستخط شدہ عدد قسم کا نہ ہو۔ اس کی وجہ یہ ہے کہ، اگر منافع منفی ہے، تو ماڈیولو منفی ہوگا، جبکہ ہمیشہ مثبت رہے گا۔ ان زبانوں کے لیے مساوات x% 2n = = x <0؟ x | ~ (2n-1): x & (2n-1) کو اس کے بجائے استعمال کرنا پڑتا ہے، جس کا اظہار بٹ وائز OR، NOT اور AND آپریشنز کا استعمال کرتے ہوئے کیا جاتا ہے۔ عام کانسٹینٹ-ماڈیولس آپریشنز کے لیے اصلاح بھی کانسٹینٹ-ڈیوائزر آپٹیمائزیشن کا استعمال کرتے ہوئے پہلے ڈویژن کا حساب لگا کر موجود ہے۔ خصوصیات (شناخت) کچھ ماڈیولو کارروائیوں کو دیگر ریاضیاتی کارروائیوں کی طرح فیکٹر یا توسیع دی جا سکتی ہے۔ یہ کرپٹوگرافی کے ثبوتوں میں مفید ہو سکتا ہے، جیسے ڈفی-ہیلمین کلیدی تبادلے۔ ان میں سے کچھ خصوصیات کے لیے اس کی ضرورت ہوتی ہے اور یہ انٹیجرز ہیں۔ شناخت: کی تمام مثبت عدد اقدار کے لیے۔ اگر ایک پرائم نمبر ہے جو اس کا تقسیم کار نہیں ہے، تو پھر، فرمیٹ کے چھوٹے نظریہ کی وجہ سے۔ الٹا:۔ ماڈیولر ضرب الٹا کی نشاندہی کرتا ہے، جس کی وضاحت صرف اس صورت میں کی جاتی ہے جب اور نسبتا پرائم ہوں، جو اس صورت میں ہوتا ہے جب بائیں ہاتھ کی طرف کی وضاحت کی جاتی ہے: تقسیم:۔ ۔ تقسیم (تعریف):، جب دائیں ہاتھ کی طرف کی وضاحت کی جاتی ہے (یعنی کب اور کب کوپرائم ہوتے ہیں)، اور دوسری صورت میں غیر متعین۔ الٹا ضرب: پروگرامنگ زبانوں میں اس کے علاوہ، بہت سے کمپیوٹر سسٹم ایک فعالیت فراہم کرتے ہیں، جو ایک ہی وقت میں حصص اور بقیہ پیدا کرتا ہے۔ مثالوں میں x86 فن تعمیر کی ہدایت، سی پروگرامنگ زبان کا فنکشن، اور ازگر کا فنکشن شامل ہیں۔ آفسیٹ کے ساتھ عمومی ماڈیولو بعض اوقات ماڈیولو کے نتیجے کے لیے مفید ہوتا ہے کہ وہ 0 اور کے درمیان نہ ہو، بلکہ کچھ تعداد اور کے درمیان ہو۔ اس صورت میں، اسے آفسیٹ کہا جاتا ہے اور یہ خاص طور پر عام ہے۔ ایسا لگتا ہے کہ اس آپریشن کے لیے کوئی معیاری اشارہ نہیں ہے، لہذا آئیے عارضی طور پر استعمال کریں۔ اس طرح ہمارے پاس مندرجہ ذیل تعریف ہے: صرف اور صورت میں۔ واضح طور پر، معمول کا ماڈیولو آپریشن صفر آفسیٹ سے مطابقت رکھتا ہے: آفسیٹ کے ساتھ ماڈیولو کے عمل کا تعلق فلور فنکشن سے درج ذیل ہے: اسے دیکھنے کے لیے، آئیے۔ ہم سب سے پہلے اسے دکھاتے ہیں۔ یہ عام طور پر سچ ہے کہ تمام انٹیجرز کے لیے ؛ اس طرح، یہ خاص صورت میں بھی سچ ہے جب ؛ لیکن اس کا مطلب یہ ہے کہ، جو ہم ثابت کرنا چاہتے تھے۔ یہ ظاہر کرنا باقی ہے۔ آئیے اور انٹیجرز اس طرح بنیں کہ اس کے ساتھ (یوکلڈین ڈویژن دیکھیں)۔ پھر، اس طرح۔ اب لے لو اور دونوں طرف شامل کریں، حاصل کریں۔ لیکن ہم نے یہ دیکھا ہے، اس لیے ہم کام کر چکے ہیں۔ آفسیٹ کے ساتھ ماڈیولو ریاضی میں اس طرح لاگو ہوتا ہے۔ کٹوتی کا استعمال کرتے ہوئے ماڈیولو کی دیگر تعریفیں لاگو کرنا نوتھ کے فلورڈ ڈویژن اور یوکلڈین ڈویژن کی ریاضیاتی خوبصورتی کے باوجود، پروگرامنگ زبانوں میں کٹوتی شدہ ڈویژن پر مبنی ماڈیولو تلاش کرنا عام طور پر بہت زیادہ عام ہے۔ لیجن ایک کٹے ہوئے عدد کی تقسیم کو دیکھتے ہوئے دو حصوں کا حساب لگانے کے لیے درج ذیل الگورتھم فراہم کرتا ہے:/* یوکلڈین اور فلورڈ ڈیوموڈ، C کے ldiv () */ٹائپڈف اسٹرکچر کے انداز میں یہ ڈھانچہ C stdlib.h کا حصہ ہے، لیکن وضاحت کے لیے یہاں دوبارہ پیش کیا گیا ہے */long int quot; long int rep;} ldiv _ t ؛/* یوکلڈین ڈویژن */inline ldiv _ t ldivE (long numer, long donom) {/* C99 اور C + + 11 زبانیں ان دونوں کو تراشنے کے طور پر بیان کرتی ہیں۔ */لمبا q = عدد/ڈینوم ؛ لمبا r = عددی ٪ ڈینوم ؛ اگر (r <0) {اگر (ڈینوم> 0) {q = q-1 ؛ r = r + ڈینوم ؛} اور {q = q + 1 ؛ r = r-ڈینوم ؛} واپسی (ldiv _ t) {. quot = q،. rem = r} ؛}/* فلورڈ ڈویژن */ان لائن ldiv _ t ldivF (لمبا عدد، لمبا ڈینوم) {لمبا q = عدد/ڈینوم ؛ لمبا r = عددی ٪ ڈینوم ؛ اگر ((r> 0 & & & ڈینوم <0) | (r <0 & ڈینوم> 0)) اسکرین کی جگہ بچانے کے لیے یہاں کارروائیوں کو یکجا کیا گیا ہے، کیونکہ منطقی شاخیں ایک جیسی ہیں۔ ماڈیولو بھی دیکھیں-لفظ ماڈیولو کے بہت سے استعمال، یہ سب کارل ایف گاؤس کے 1801 میں ماڈیولر ریاضی کے تعارف سے پیدا ہوئے۔ ماڈیولو (ریاضی)، ریاضی میں اصطلاح کا عمومی استعمال ماڈیولر ایکسپونینٹیشن موڑ (زاویہ) نوٹ حوالہ جات بیرونی روابط مختلف قسم کے انٹیجر ڈویژن ماڈیولوراما، ضرب کی میزوں کی چکور نمائندگی کا حرکت پذیری (فرانسیسی میں وضاحت) کمپیوٹر ریاضی مضامین مثال کے طور پر C + + کوڈ آپریٹرز (پروگرامنگ) نمبروں پر ماڈیولر ریاضی کی کارروائیاں ڈی: ڈویژن mit Rest#Modulo