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环境不知道行不行, 如有不对请求指出

CSAPP 读书笔记 - 2.31练习题,布布扣,bubuko.com

时间: 2024-10-13 00:53:30

CSAPP 读书笔记 - 2.31练习题的相关文章

【csapp读书笔记3】x86 Assembly Language

这部分其实没什么好笔记的...毕竟和课本上的x86汇编是一样的 不过有需要pay attention的地方就是x86汇编有两种书写形式:Intel format和AT&T format (csapp  Page200) Intel format:就是常见于Microsoft和Intel的文档中.另外中国的教材也用这种format AT&T format:csapp就用的这种.另外gcc.objdump等工具反编译的代码默认也是这种格式 主要区别就是操作数中source和destinatio

【csapp读书笔记二】关于整数和浮点数的日常

PART I: Integer There are two types of integer : unsigned integer(only positive) & signed integer(positive,negative and 0)So how does a computer storage an integer? 1.Regarding unsigned integer: CPU use binary to represent unsigned integer directly.e

【CSAPP读书笔记1】

我们都知道在计算机中一切信息都是由二进制码0010101010111之类的东西表示的.但是这一串01本身其实是没有任何意义的.只有通过各种编码算法encode起来才能给它赋予生命. 在学习计组的时候经常会需要拿出一段二进制编码进行分析.但是这一堆000111之类的写出来实在是太长了....其实用十六进制就可以很简约地表示二进制,而且它们之间的转化异常简单. 比如:0x5F3759DF就对应二进制数 101 1111 0011 0111 0101 1001 1101 1111 仔细看看有什么规律呢

《Effective C++》读书笔记汇总

我之前边读<Effective C++>边写下每个条款的读书笔记,这一版是C++11之前的版本.这里我将每个条款令我印象深刻的点小结一下. 1.C++包括:Plain C(面向过程).OOP(面向对象).模板(泛型和模板元编程).STL(C++标准库). 2.用inline.enum.const代替#define.#define定义的宏,一旦复杂起来,高手都很难掌控.不要带入C的习惯. 3.灵活使用const前缀.不需要进行改变的数据加上const前缀.指针的const前缀有两种形式,cons

《30天自制操作系统》读书笔记(2)hello, world

让系统跑起来 要写一个操作系统,我们首先要有一个储存系统的介质,原版书似乎是06年出版的,可惜那时候没有电脑,没想到作者用的还是软盘,现在的电脑谁有软驱?不得已我使用一张128M的SD卡来代替,而事实上你用的是U盘还是软盘对我们的操作系统没有影响,缺点是你的U盘刷入系统后容量只能是1440 MB,即当年流行的3.5英寸软盘的大小,当然不用担心,再格式化一次(用DiskGeniu),就可以恢复. 我做事情的话,总是怕自己的努力的结果白费了,害怕辛辛苦苦看完这本书但是发现做出来的东西现在根本没法用,

读书笔记--C陷阱与缺陷(七)

第七章 1.null指针并不指向任何对象,所以只用于赋值和比较运算,其他使用目的都是非法的. 误用null指针的后果是未定义的,根据编译器各异. 有的编译器对内存位置0只读,有的可读写. 书中给出了一种判断编译器如何处理内存0的代码: 1 #include <stdio.h> 2 int main() 3 { 4 5 char *p; 6 p=NULL; 7 printf("location 0 contains: %d\n", *p); 8 9 return 0; 10

【转】《windows核心编程》读书笔记

这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁,往往是很多单独的字句,后面的内容更为连贯. 海量细节. 第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更早的错误码可能被覆盖. 2.         GetLastError可能用于描述成功的原因(CreatEvent)

Linux内核架构读书笔记 - 2.5.2 数据结构

调度系统各个组建关系如下 激活调度器两种方法:进程睡眠或其他原因放弃CPU,周期性检测 上述两个组件统称为通用调度器或核心调度器. 调度器用于判断接下来运行那个进程,内核支持不同的调度策略( 完全公平调度 实时调度 无事可做的空闲调度进程) 调度器被调用时候 需要执行体系相关的进程上下文切换 每个进程属于某个调度器类,各个调度器负责管理所属进程,通用调度器不涉及进程管理,都由调度器来 下面分别讲述: task_struct 成员 sched.h 1 struct task_struct { 2

TJI读书笔记15-持有对象

body, td { font-family: 微软雅黑; font-size: 10pt; } TJI读书笔记15-持有对象 总览 类型安全和泛型 Collection接口 添加元素 List 迭代器 LinkedList 栈 Set Map Queue Collection和Iterator Foreach与迭代器 总结 总览 It's a fairly simple program that only has a fixed quantity of objects with known l