मान लीजिए हम दो संख्याओं A और B को गुणा करने के बाद परिणाम ढूंढना चाहते हैं। हमें जांचना है कि गुणा किया गया मान 64-बिट पूर्णांक से अधिक होगा या नहीं। यदि हम 100 और 200 को गुणा करते हैं, तो यह अधिक नहीं होगा, यदि हम 10000000000 और -10000000000 को गुणा करते हैं, तो यह ओवरफ्लो होगा।
इसे जांचने के लिए, हमें कुछ चरणों का पालन करना होगा। ये नीचे जैसे हैं -
चरण −
यदि संख्याओं में से कोई एक 0 है, तो यह अधिक नहीं होगा
अन्यथा, यदि दो का गुणनफल एक से भाग देने पर दूसरे के बराबर है, तो यह अधिक नहीं होगा
कुछ अन्य मामलों के लिए, यह अधिक होगा।
उदाहरण
#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