কম্পিউটার টিউটোরিয়াল

বাইনারি নাম্বার সিস্টেম: C/C++-তে অ্যারিথমেটিক অ্যাডিশনে ওভারফ্লো


২'স কমপ্লিমেন্ট নাম্বার সিস্টেম কম্পিউটার আর্কিটেকচারে ব্যাপকভাবে ইমপ্লিমেন্টেড।

N-বিট ২'স কমপ্লিমেন্ট নাম্বার সিস্টেম -2ⁿ⁻¹ থেকে 2ⁿ⁻¹ - ১ পর্যন্ত নম্বর রিপ্রেজেন্ট করতে পারে।

৪ বিট -৮ থেকে ৭ পর্যন্ত নম্বর রিপ্রেজেন্ট করতে পারে।

৫ বিট -১৬ থেকে ১৫ পর্যন্ত নম্বর রিপ্রেজেন্ট করতে পারে ২'স কমপ্লিমেন্ট সিস্টেমে।

অভারফ্লো ঘটে অ্যাডিশনের সময় যখন ২টি N-বিট ২'স কমপ্লিমেন্ট নম্বর যোগ করা হয় এবং আউটপুট সেটি N-বিট গ্রুপে ফিট হওয়ার জন্য খুব বড় হয়।

এক কম্পিউটার N-বিট ফিক্সড রেজিস্টার ধারণ করে। ২টি N-বিট নম্বর যোগ করার রেজাল্ট সর্বোচ্চ N+1 বিট নম্বর হবে।

ক্যারি ফ্ল্যাগ সেই এক্সট্রা বিটটি স্টোর করে। কিন্তু ক্যারি সবসময় ওভারফ্লো নির্দেশ করে না।

ওভারফ্লো ডিটেকশন

ওভারফ্লো ঘটে যখন −

  • দুটি নেগেটিভ নম্বর যোগ করার রেজাল্ট পজিটিভ হয় বা

  • দুটি পজিটিভ নম্বর যোগ করার রেজাল্ট নেগেটিভ হয়।

তাই ওভারফ্লো ডিটেক্ট করা যায় দুই অপেরেন্ড এবং রেজাল্টের মোস্ট সিগনিফিক্যান্ট বিট (MSB) ভেরিফাই করে। কিন্তু ৩-বিট কমপেরেটর ইমপ্লিমেন্ট করার বদলে ওভারফ্লো ২-বিট কমপেরেটর দিয়েও ডিটেক্ট করা যায় শুধু MSB-এর ক্যারি-ইন এবং ক্যারি-আউট ভেরিফাই করে। আমরা N-বিট ২'স কমপ্লিমেন্ট নম্বরের অ্যাডিশন বিবেচনা করি।

বাইনারি নাম্বার সিস্টেম: C/C++-তে অ্যারিথমেটিক অ্যাডিশনে ওভারফ্লো


ওভারফ্লো ঘটে যখন ক্যারি-ইন ≠ ক্যারি-আউট। ওভারফ্লোর উপরের এক্সপ্রেশন নিচের অ্যানালিসিস থেকে আলোচনা করা যায়।

বাইনারি নাম্বার সিস্টেম: C/C++-তে অ্যারিথমেটিক অ্যাডিশনে ওভারফ্লো


প্রথম ফিগারতে দুটি নম্বরের MSB ০ যা ইঙ্গিত করে সেগুলো পজিটিভ। এখানে যদি ক্যারি-ইন ১ হয় তবে রেজাল্টের MSB ১ হয় যা নির্দেশ করে রেজাল্ট নেগেটিভ (ওভারফ্লো) এবং ক্যারি-আউট ০। ক্যারি-ইন ≠ ক্যারি-আউট অতএব ওভারফ্লো।

দ্বিতীয় ফিগারতে দুটি নম্বরের MSB ১ যা ইঙ্গিত করে সেগুলো নেগেটিভ। এখানে যদি ক্যারি-ইন ০ হয় তবে রেজাল্টের MSB ০ হয় যা নির্দেশ করে রেজাল্ট পজিটিভ (ওভারফ্লো) এবং ক্যারি-আউট ১। ক্যারি-ইন ≠ ক্যারি-আউট অতএব ওভারফ্লো।

তাই MSB-এ ক্যারি-ইন এবং ক্যারি-আউট ওভারফ্লো ডিটেক্ট করার জন্য পর্যাপ্ত।

বাইনারি নাম্বার সিস্টেম: C/C++-তে অ্যারিথমেটিক অ্যাডিশনে ওভারফ্লো


উপরের XOR গেট ওভারফ্লো ডিটেক্ট করার জন্য ইমপ্লিমেন্ট করা যায়।


  1. নাম্বার লিংক গেম: C/C++-তে পাজল জেনারেশন অ্যালগরিদম

  2. C/C++-তে system() ফাংশন: কম্যান্ড এক্সিকিউশন

  3. সি/সি++ প্রোগ্রামে ট্রায়্যাঙ্গুলার ম্যাচস্টিক নম্বর বের করা

  4. সি/সি++ প্রোগ্রাম: nth ক্যাটালান সংখ্যা (Catalan Number)