深入理解计算机系统 练习题2.32 答案与分析

错误示例

#include <stdio.h>  
#include "stdafx.h"
#include <iostream>


using namespace std;

int tadd_ok(int x, int y) {
    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 tsub_ok(int x, int y) {
    return tadd_ok(x, -y);
}
int main() {
    int x = 1;
    int y = INT_MIN;
    cout << INT_MAX << endl;
    cout << y << endl;
    cout << -y << endl;
    tsub_ok(x,y);
}

打印结果
这里写图片描述
此问题的原因在于当y = INT_MIN时,y = -y,为什么y = -y因为-2147483648求反理论上应该是2147483648,从而使-y + y =0,但是由于有符号数的最大值是2147483647,所以出现溢出,有定义可知,当y = INT_MIN时,-y=INT_MIN,从而造成代码异常
修改为

#include <stdio.h>  
#include "stdafx.h"
#include <iostream>


using namespace std;

int tadd_ok(int x, int y) {
    int sum = x + y;
    if (y == INT_MIN) {
        int neg_over = x < 0;
        return !neg_over ;
    }
    else {
        int neg_over = x < 0 && y < 0 && sum >= 0;
        int pos_over = x >= 0 && y >= 0 && sum < 0;
        return !neg_over && !pos_over;
    }


}

int tsub_ok(int x, int y) {
    return tadd_ok(x, -y);
}
int main() {
    int x = 1;
    int y = INT_MIN;
    cout << INT_MAX << endl;
    cout << y << endl;
    cout << -y << endl;
    cout << tsub_ok(x, y) << endl;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1、我们称由( )实现的机器为虚拟机器。 A、硬件 B、软件 C、微程序 D、固件 2、计算机系统结构设计者所关心的是( )所看到的的计算机结构。 硬件设计人员 B、逻辑设计人员 C、机器语言或汇编语言程序员 D、高级语言程序员 3、计算机组成是计算机系统结构的( )。 A、硬件实现 B、逻辑实现 C、软件实现 D、以上三种 4、在计算机系统设计时,为了提高系统性能,应当注意( )。 A、加快经常性使用指令的执行速度 B、要特别精心设计少量功能强大的指令 要减少在数量上占很小比例的指令的条数 D、要加快少量指令的速度 5、SIMD计算机可以处理( )。 A、多指令流、单数据流 B、单指令流单数据流 C、多指令流多数据流 D、单指令流多数据流 6、在提高CPU性能的问题上,从系统结构角度,可以( )。 A、提高时钟频率 B、减少程序指令条数 C、减少每条指令的时钟周期数 D、减少程序指令条数和减少每条指令的时钟周期数 7、冯.诺依曼计算机是( )。 A、以存储器为中心 B、以运算器为中心 C、以处理输入/输出危重点 D、以存储器与计算器为中心 8、解决软件移植最好的办法就是( )。 A、采用模拟方法 B、采用仿真的方法 C、采用统一高级语言 D、采用统一标准设计计算机结构 9、对计算机系统结构,下列透明的是( )。 A、数据总线宽度 B、浮点数表示 C、CPU寄存器个数 D、存储器的编址方法 10、以下对系统程序员不透明的是( )。 A、系列机各档不同的数据通路宽度 B、虚拟存储器 C、指令缓冲寄存器 D、存储器读写缓冲寄存器 15、自定义带标志符的数据表示的机器中,使数据带有标志符与人们的使用习惯更接近了,缩小了人与机器之间的语义差距,这使得( )。 A、程序设计得以简化 B、使指令系统得到了精简 C、使计算更快 D、使程序有更好的移植性 16、在两个零地址空间情况下,编址方式是( )。 通用寄存器独立编址,输入输出与存储器统一编址 通用寄存器与存储器统一编址,输入输出单独编址。 只考虑存储器和输入输出的编址。 输入输出与寄存器统一编址,存储器单独编址。 17、下列不属于寄存器寻址方式优点的是( )。 A、指令字长短 B、指令执行速度快 C、指令方便优化编译 D、支持向量运算 18、在CISC处理机中,主要的特点是( )。 A、简化了指令功能 B、改善了指令执行速度 C、减少了寻址方式 D、强化指令功能,支持高级语言和编译程序,缩小高级语言与机器指令之间的差别。 19、重叠寄存器技术主要用于解决在RISC系统中因( )而导致的问题。 A、JMP指令影响流水线 B、CALL指令的现场保护 C、只有LOAD和STORE指令带来的访问存储器不便 D、存储器访问速度 20、在RISC体系结构中,规定运算型指令( )。 A、在寄存器和存储器之间进行操作 B、都在通用寄存器内进行操作 C、在存储器中进行操作 D、在运算器内进行操作 21、下列属于RISC的特点有( )。 A、大多数指令在单周期内完成 B、采用LOAD/STORE指令访问存储器 C、大多采用硬布线控制逻辑 D、指令数目多,指令功能强大 E、具有固定的指令格式 22、下列关于存储系统的观点正确的有:( )。 两个或两个以上速度、容量和价格各不相同的存储器用硬件、软件、或软件与硬件相结合的方法连接起来成为一个存储系统。 存储系统对应用程序员透明,并且从应用程序员看来,它是一个存储器,这个存储器的速度接近速度最快的那个存储器,存储容量与容量最大的那个存储器相等,单位容量的价格接近最便宜的那个存储器。 Cache存储系统的实现需要操作系统的管理。 虚拟存储系统对于系统程序员来说是透明的。 23、某CACHE存储系统,T2=5T1,在命中率H为0.95的情况下,该存储系统的加速比是( )。 A.5 B. 0.95 C.0.05 D.4.17 24、设计指令系统在功能方面的基本要求:( )。 A.完整性,是指应该具备的基本指令种类,通用计算机必须有5类基本指令 B.规整性,包括对称性和均匀性C.高效率,指令的执行速度要快;指令的使用频度要高;各类指令之间要有一定的比例 D 兼容性 E.可靠性 25、下列关于存储系统替换算法的说法正确的有: A. FIFO反映了历史性,没有反映程序访问的局部性。 B.随机算法实现简单,但既没有反映历史性,没有反映程序访问的局部性。 C.LRU既反映了历史性,又反映了程序访问的局部性,命中率较接近OPT,是实际应用最广泛的一种替换算法。 D.OPT是最优替换算法,是实际应用最广泛的一种替换算法。 26、在页面替换中,如果选择近期最少访问的页面作为被替换的页面,这种替换算法叫座( )。 A、FIFO算法 B、LFU算法 C、LRU算法 D、OPT算法 27、在下述各题中选择所有正确答案编号填入括号中: (1)下列关于存储系统的观点正确的有: 两个或两个以上速度、容量和价格各不相同的存储器用硬件、软件、或软件与硬件相结合的方法连接起来成为一个存储系统。 存储系统对应用程序员透明,并且从应用程序员看来,它是一个存储器,这个存储器的速度接近速度最快的那个存储器,存储容量与容量最大的那个存储器相等,单位容量的价格接近最便宜的那个存储器。 Cache存储系统的实现需要操作系统的管理。 虚拟存储系统对于系统程序员来说是透明的。 27、下列属于RISC的特点有 。 A、大多数指令在单周期内完成 B、采用LOAD/STORE指令访问存储器 C、大多采用硬布线控制逻辑 D、指令数目多,指令功能强大 E、具有固定的指令格式 28、流水线的主要特点有: A. 应取最快的流水线功能段的时间间隔作为整个流水线的流水周期。 B.连续提供同类任务才能充分发挥流水线的效率 C.在流水线的每一个流水线段中都要设置一个流水锁存器 D.各流水段的时间应尽量相等, 流水线需要有“装入时间”和“排空时间” 29、并行处理机和多处理机系统的主要区别有: A.并行处理机的并行性存在于指令外部,多处理机的并行性存在于指令内部。 B.并行处理机把同种操作集中在一起,由指令直接启动各PE同时工作。多处理机用专门的指令来表示并发关系,一个任务开始执行时能够派生出与它并行执行的另一些任务,如果任务数多于处理机数,多余的任务进入排队器等待。 C.并行处理机仅一个CU,自然是同步的。 D.多处理机系统的PE是固定的,采用屏蔽手段改变实际参加操作的PE数目。 30、关于四种消息寻径方式观点正确的有: A.虫蚀寻径:每个结点的缓冲区较小,易于VLSI实现;较低的网络传输时延;通道共享性好,利用率高;易于实现选播和广播通信方式。 B. 线路交换占用物理通路的时间比较短。 C.虚拟直通的主要优点:通信延迟与结点数无关。主要缺点:每个结点需要有足够大的缓冲区来存储最大信息包。在最坏的情况下与存储转发方式的 通信时延是一样的,经过的每个结点都发生阻塞,都需缓冲。 D.存储转发建立源结点到目的结点的物理通路开销很大,占用物理通路的时间长 31、输入输出系统的特点是: 。 A.异步性 B.实时性 C.即插即用 D.设备无关性 32、下列关于存储系统替换算法的说法正确的有: A. FIFO反映了历史性,没有反映程序访问的局部性。 B.随机算法实现简单,但既没有反映历史性,没有反映程序访问的局部性。 C.LRU既反映了历史性,又反映了程序访问的局部性,命中率较接近OPT,是实际应用最广泛的一种替换算法。 D.OPT是最优替换算法,是实际应用最广泛的一种替换算法。 33、关于超标量处理机和超流水线处理机说法正确的有:A. 超标量处理机是通过增加硬件资源为代价来换取处理机性能的。 B. 超流水线处理机则通过各硬件部件充分重叠工作来提高处理机性能。 超标量处理机采用的是空间并行性,超流水线处理机采用的是时间并行性 超标量处理机在每个时钟周期的一开始就同时发射多条指令,而超流水线处理机则要把一个时钟周期平均分成多个流水线周期,每个流水线周期发射一条指令; 34、设计指令系统在功能方面的基本要求: A.完整性,是指应该具备的基本指令种类,通用计算机必须有5类基本指令 B.规整性,包括对称性和均匀性C.高效率,指令的执行速度要快;指令的使用频度要高;各类指令之间要有一定的比例 D 兼容性 E.可靠性 35、多处理机系统的特点有: A.结构灵活 B.多处理机的并行性存在于指令外部. C.多处理机仅一个CU,自然是同步的。 D.多处理机用专门的指令来表示并发关系,一个任务开始执行时能够派生出与它并行执行的另一些任务,如果任务数多于处理机数,多余的任务进入排队器等待。 E. 多处理机的PE是固定的,采用屏蔽手段改变实际参加操作的PE数目
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值