首页 > 代码库 > CSAPP 读书笔记 - 2.31练习题
CSAPP 读书笔记 - 2.31练习题
根据等式(2-14)
假如w = 4 数值范围在-8 ~ 7之间 2^w = 16
x = 5, y = 4的情况下面
x + y = 9 >=2 ^(w-1) 属于第一种情况
sum = x + y = 9- 2^w = –7
sum – x == y?
-7 – 4 = – 11 属于第三种情况 负溢出
sum – x = –7 - 4= –11 + 2^w = 5 = y?
明显是等于的
同样
sum- y = x ?
-7 – 5 = –12 + 2^w = 4 = x?
所以溢出的情况下面根本判断不到。
判断有没有溢出的情况 就判断有没有正溢出和负溢出
怎么判断?
x + y >= 2 ^ (w-1) 正溢出
0 + x + y >= 2^(w-1)
0 >= 2^(w-1) – x – y 成立就是正溢出了
0 + x + y < - 2 ^ (w-1) 负溢出
0 < –2^(w-1) – x – y 成立就是负溢出了
所以我的答案是:
if (0 >= 2^(w-1) – x – y) || (0 < –2^(w-1) – x – y) { result = 0 } else { result = 1 }
没有C环境不知道行不行, 如有不对请求指出
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。