1.根据附录C描述的机器语言回答下列问题。
    a.将指令2304(十六进制)写成16位位串。
答:0010 0011 0000 0100
    b.将指令B2A5(十六进制)的操作码写成4位位串。
答:1011 0010 1010 0101
    c.将指令B2A5(十六进制)的操作数字段写成12位位串。
答:0010 1010 0101
  2.假设在附录C描述的机器里一个数据块存储在地址从98A2(含)的存储单元中。这一数据块占据多少存储单元?列出他们的地址。
答:占据2个字节。 1001 1000 1010 0010 
3.概述当附录C描述的机器执行一条操作码为5的指令时,所涉及的步骤。用一组说明来表示你
的答案,就像你在告诉CPU做什么。
答:寄存器S及寄存器T的位模式作为二进制补码表示相加(ADD),将求和结果存放在寄存器R中
例: 5726将使得寄存器2和寄存器6中的二进制数值相加,并将和存放在寄存器7中
  4.完成下列运算。
a.                                              b.
                111001                              000101
      AND    101001                      一块操AND    101010
101001                              000000
c.                                              d.       
              001110                                111011
      AND    010101                        AND    110111
              000100                                110011
e.                                              f.
              111001                                010100
      OR      101001                        OR      101010
              111001                                111110
g.                                              h.         
              000100                                101010
      OR      010101                        OR      110101
              010101                                111111
i.                                              j.
              111001                                000111
      XOR    101001                        XOR    101010
              010000                                101101
k.                                              l.
              010000                                111111
      XOR    010101                        XOR    110101 
              000101                                001010
  5.概述CISC体系结构和RISC体系结构之间的区别。
CISC:1.复杂指令的执行需要更多时间周期 2.所有指令都可以访问内存  3.无流水线或流水线程度比较低4.指令由微代码翻译执行5.指令格式可变6.指令多,模式多7.伪代码翻译模块复杂 8.寄存器少
RISC:1.简单指令只需要一个时钟周期 2.只有 load/stores 指令可以访问内存3.流水线结构
4.指令直接由硬件执行 5.指令格式固定 6.指令少,模式少  7. 软件编译器复杂8.寄存器多
6.编写并测试一个Python脚本,读取一个直角三角形的两个浮点边长,输出斜边长度、周长和面积。(TC:可用C语言编写,编成函数形式)
答:
#include<stdio.h>
#include<math.h>
int main()
{double a,b,c,disc,x1,x2,p,q;
    scanf("%lf%lf%lf",&a,&b,&c);
    disc=b*b-4*a*c;
    p=-b/(2.0*a);
    q=sqrt(disc)/(2.0*a);
    x1=p+q; x2=p-q;
    printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
    return 0; }
  7.如果一个进程需要执行大量的I/O操作,我们就说这个操作是I/O密集型的,而如果一个进程由大多数在CPU/存储系统中完成的计算构成,我们就说这个进程是计算密集型的。如果这两种进程都在等待分配时间片,那么谁将获得优先权?为什么?
答:计算机密集型将获得优先权。因为CPU bound的程序一般而言CPU占用率相当高。这可能是因为任务本身不太需要访问I/O设备,也可能是因为程序是多线程实现因此屏蔽掉了等待I/O的时间而I/O bound的程序一般在达到性能极限时,CPU占用率仍然较低。这可能是因为任务本身需要大量I/O操作,而pipeline做得不是很好,没有充分利用处理器能力
  8.按照时间顺序列出一个程序被中断时发生的主要事件。
答:1.停止当时正在做的工作
2.记录当时任务进展的位置
3.处理中断时间。
  9.如果一个等待时间片的进程一直都没有获得时间片,我们就说这个进程在遭受饥饿(starvation).
答:a.建立立交桥,使得小流量的进程可以从立交桥经过,使得压力缓解。
b.当其他进程大量占据时间。
  10.下面是“哲学家进餐”问题,它最初是由E.W.Dijkstra提出的,现在已经是计算机科学传说中的一部分。5个哲学家围着一个圆桌就座,每个人面前放了一盘意大利面条。桌上有5把叉子,每个盘之间有一把,每个哲学家都在思考和吃面之间轮换。为了吃面,一个哲学家需要拥有紧挨他盘子的2把叉子。说明“哲学家进餐”问题中的死锁和饥饿(见问题40)问题。
答:锁死:当哲学家都拿起右手的叉子,他们都在等待左手的叉子,但是哲学家没有两只叉子的话不会进食,所以哲学家将一直等待下去,于是发生了锁死。
饥饿:当一个或者两个哲学家同时拿到了两个叉子,坐在他身旁的两位哲学家将会无法进食,只能等待双手都有叉子的哲学家完成进食。于是发生了饥饿。