0
点赞
收藏
分享

微信扫一扫

辨别相加溢出


读深入理解计算机系统GET的技能。

补码加法溢出

当x>0 且y>0 时,x+y<0正溢出 以及 当x<0且y<0时,x+y>0负溢出 

可以写判断函数int add( int x,  int y)//1代表不溢出 比-2^(w-1)小了就+2^w比2^(w-1)大了就要减去2^w

{
int sum=x+y;
int neg_over =x<0&&y<0&&sum>0;
int pos_over =x>0&&y>0&&sum<0;
return !neg_over&&!pos_over;
}

无符号加法溢出

int  add(unsigned x,unsigned y)
{
unsigned sum=x+y;
return sum>=x; //x+y-2^w when 2^w+1 >x+y>=2^w }

举报

相关推荐

0 条评论