首页 > 其他分享 >1.练习题 2.31

1.练习题 2.31

时间:2022-11-11 23:56:58浏览次数:40  
标签:练习题 2.31 int sum && tadd over 溢出

练习题 2.31

补码溢出的判断

int tadd_ok(int a;int b)
{
        int neg_over = a>0 && b>0 && a+b<0;
        int pos_over = a<0 && b<0 && a+b>0;
        return !neg_over &&pos_over;
}

你的同事对你补码加法溢出条件的分析有些不耐烦了,他给出了一个 函数 tadd_ok 的实现,如下所示:

/* Determine whether arguments can be added without overflow */
/* WARNING: This code is buggy. */
int tadd_ok(int x, int y) 
{ 
	int sum= x+y; 
	return (sum-x == y) && (sum-y == x); 
} 

这段代码是错误的:

当相加不溢出时, (sum-x == y) 和 (sum-y == x) 都是成立的

当正溢出时
sum = x + y -2^w

sum-x = x +y -2^w -x = (y - 2^w) mod 2^w = y

当负溢出时

sum = x + y + 2^w

sum -x = x + y + 2^w -x = (y + 2^w) mod 2^w = y

所以,无论正溢出还是负溢出,sum -x = y 是一定的
所以,这不可作为判断溢出的条件

标签:练习题,2.31,int,sum,&&,tadd,over,溢出
From: https://www.cnblogs.com/zyx-c/p/16882463.html

相关文章

  • 学生之家-6道练习题
    让用户输入一个数判断其是奇数还是偶数并把结果输出输入一个溶液的ph值试判断该溶液是酸性还是碱性或是中性溶液并把结果输出(常温25℃条件下)给定一个年份判断是否是......
  • 【MySQL】基础练习题
    习题参考:https://blog.csdn.net/qq_41936662/article/details/80393172数据库准备建表语句学生表studentCREATETABLE`student`(`s_id`varchar(20)NOTNULL,......
  • python练习题-数据类型-字符串方法-字符串验证类方法(五)
    #coding=utf-8#1.startswith(prefix[,start[,end]])检查字符串是否是以指定子字符串prefix开头print"abcefg".startswith("abc");#2.endswith检查字符串......
  • javascript - 练习题:自定义typeof / 数组去重
    自定义typeof函数为啥要自定义typeof,因为 引用值 会被typeof 输出为object。 换句话说:typeof 不能区分 引用值(数组、对象和包装类)的具体类型;typeof 本身是可......
  • JavaSE—第一章练习题
    【答案】1、B   2、B     3、B   4、B    5、B    6、JavaSE;JavaEE;JavaME  7、简单性、面向对象、分布性、编译和解释性、......
  • RHCE角色练习题
    RHCE角色练习题1、使用RHEL系统角色安装RHEL系统角色软件包,并创建符合以下条件的playbook/home/student/ansible/timesync.yml:在所有受管节点上运行使用timesync......
  • javascript - 练习题:浅层克隆和深层克隆
    浅层克隆问:把obj 对象的内容,克隆到ojb1 上去。 varobj={name:'abc',age:123,sex:"female"}varobj1={}分析:这个没有引用值的对象,可以使用浅层克隆......
  • javascript - 练习题(若干)
    慢慢收集一些习题、考题练习1问:X,Y,Z分别是多少?varx=1,y=z=0;functionadd(n){returnn=n+1;}y=add(x);functionadd(n){returnn=n+3;}z=add(x);conso......
  • 关于Python封装函数的几道练习题
    1.封装函数,可以判断一个数字是否为偶数deffunc(n):ifn%2==0:print("%d是偶数"%n)else:print("%d是奇数"%n)func(11)#11是奇数2.封装......
  • 【Java】接口多态练习题
    设计一个USB接口,USB接口拥有启动和停止方法,网卡类实现USB接口,重写实现网卡启动停止方法声卡类实现USB接口,重写实现声卡启动和停止方法,主板类拥有使用USB接口的方法。方法......