สมมติว่าเราต้องการหาผลลัพธ์หลังจากคูณตัวเลข 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