สมมติว่าเราต้องการหาผลลัพธ์หลังจากคูณตัวเลข A และ B สองตัว เราต้องตรวจสอบว่าค่าที่คูณจะเกินจำนวนเต็ม 64 บิตหรือไม่ หากเราคูณ 100 และ 200 จะไม่เกิน ถ้าเราคูณ 10,000000000 และ -10000000000000 มันจะล้น
ในการตรวจสอบนี้ เราต้องทำตามขั้นตอนบางอย่าง เหล่านี้เป็นเหมือนด้านล่าง −
ขั้นตอน −
-
ถ้าตัวไหนเป็น 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