ধরুন আমরা দুটি সংখ্যা A এবং B গুণ করে ফলাফল বের করতে চাই। আমাদের চেক করতে হবে গুণফল ৬৪-বিট ইন্টিজারের সীমা অতিক্রম করবে কিনা। ১০০ এবং ২০০ গুণ করলে ওভারফ্লো হবে না, কিন্তু ১০০০০০০০০০০ এবং -১০০০০০০০০০০ গুণ করলে ওভারফ্লো হবে।
এটি চেক করতে নিচের ধাপগুলো অনুসরণ করতে হবে:
ধাপসমূহ −
- যদি দুটি সংখ্যার যেকোনো একটি ০ হয়, তবে ওভারফ্লো হবে না।
- অন্যথায়, যদি দুটি সংখ্যা গুণ করে একটি দিয়ে ভাগ করলে অন্যটি পাওয়া যায়, তবে ওভারফ্লো হবে না।
- অন্য কেসগুলোতে ওভারফ্লো হবে।
উদাহরণ
#include <iostream> #include <cmath> using namespace std; bool isMulOverflow(long long A, long long B) { if (A == 0 || B == 0) return false; long long result = A * B; if (A == result / B) return false; else return true; } int main() { long long a = 10000000000 , b = -10000000000; if(isMulOverflow(a, b)){ cout <<"It will overflow"; } else{ cout <<"It will not overflow"; } }আউটপুট
It will overflow