关于补码加法乘法溢出的思考

#include <iostream>
using namespace std;

bool add(short a,short b){
	short p = a+b;
	//正溢出                      负溢出
	return a>0&&b>0&&p<0 || a<0&&b<0&&p>0;
}

bool mul(short a,short b){
	short p = a*b; 
	//0的情况    非0的情况
	return !b || p/b==a;
}

int main(){
	bool a1 = add(32767,1);
	bool a2 = add(-32768,-1);
	cout<< a1 <<endl;
	cout<< a2 <<endl;
	
	bool m1 = mul(-32768,2);
	bool m2 = mul(32767,2);
	cout<< !m1 <<endl;
	cout<< !m2 <<endl;
	return 0;
}


你可能感兴趣的:(关于补码加法乘法溢出的思考)