1.-7的二进制补码 (D)
(1)-7的原码 1000 0111
(2)符号位不变 1000 0111
(3)数值位取反 1111 1000
(4)加1 1111 1001
注意:
(1)正整数的补码与原码相同
(2)补码转化为原码
补码的符号位为‘0’,原码就补码
补码的符号位为‘1’,原码就是补码的补码
2.四种介质,带宽最大:(C)
A 同轴电缆 B 双绞线 C 光纤 D 同步线
注:
(1)双绞线也称为双扭线,是最古老但又最常用的传输媒体。把两根互相绝缘的铜导线并排放在一起,然后用规则的方法绞合起来(这样做是为了减少相邻的导线的电磁干扰)而构成双绞线.
双绞线分为1类到5类,局域网中常用的为3类,4类和5类双绞线。 3类线用于语音传输及最高传输速率为 10Mbps的数据传输;4类线用于语音传输和最高传输速率为 16Mbps的数据传输;5类线用于语音传输和最高传输速率为 100Mbps的数据传输
(2)同轴电缆由内导体铜质芯线,绝缘层,网状编制的外导体屏蔽层及保护塑料外层组成 ,内导体和外导体构成一组线对。由于外导体屏蔽层的作用,同轴电缆具有很好的抗干扰性。
同轴电缆可以将 10Mb/S的基带数字信号传送1千米到 1.2千米,因此被广泛用于局域网中
(3)光纤通信就是利用光导纤维传递光脉冲来进行通信,而光导纤维是光纤通信的媒体。光纤在任何时间都只能单向传输,因此,要实行双向通信,它必须成对出现,一个用于输入,一个用于输出,光纤两端接到光学接口上。
光纤的传输系统比同轴电缆大的多,一般小同轴电缆的最大传输带宽为 20MHz左右,中同轴电缆的最大传输带宽为 60MHz左右。单根光导纤维的数据传输速率能达几Gbps,在不使用中继器的情况下,传输距离能达几十公里。
3. 进程阻塞原因 (A)
A.时间片切换 B.等待I/O C.进程sleep D.等待解锁
如果没有时间片轮转,那么进程就没法切换了,一个进程将独享CPU。但是不能称时间片切换导致进程阻塞。
注:
(1)进程,概念主要有两点:
第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。
文本区域存储处理器执行的代码;
数据区域存储变量和进程执行期间使用的动态分配的内存;
堆栈区域存储着活动过程调用的指令和本地变量。
第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
(2)进程的三种基本状态
进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。
就绪(Ready)状态 当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。
执行(Running)状态当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。
阻塞(Blocked)状态 正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。
进程三种状态间的转换
一个进程在运行期间,不断地从一种状态转换到另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。图3_4描述了进程的三种基本状态及其转换。
(1) 就绪→执行 处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。
(2) 执行→就绪 处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。
(3) 执行→阻塞 正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。
(4) 阻塞→就绪 处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。
关于进程的一些介绍 http://oa.gdut.edu.cn/os/multimedia/oscai/chapter2/pages/ch22.htm#页头
4.设只含根节点的二叉树高度为1,现有一颗高度为h(h>1)的二叉树上只有出度为0和出度为2的节点,那么这颗二叉树节点最少为:
A.2^h-1 B.2h-1 C.2h D.2h+1
更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/
取H=1 则可以排除C和D
有个讨巧的方法:直接取h=3,画个图看下,显然是5,所以答案为B。
下面来分析下:如果每个节点出度要么为0要么为2,那么也就是要么自己为叶子,要么自己拥有左右儿子。那么什么情况下节点最少呢?直接沿着一条路下去保持出度为2,直到高度达到h,那么此时节点总数:2h-1。
5.给定下面程序,那么执行printf("%d\n",foo(20,13));结果是多少:
int foo(int x,int y)
{
if(x <= 0 || y <= 0)return 1;
return 3*foo(x-6,y/2);
}
A.3 B.9 C.27 D.81
解:foo(20,13)->3*foo(14,6)->9*foo(8,3)->27*foo(2,1)->81foo(-4,0)=81
6.对于以下说法错误的是:
A.Dijkstra是求两点间最短路径的,复杂度:O(n^2)。
B.Floyd-Warshall是求所有点对之间最短路径的,复杂度:O(n^3)。
C.求n个数中的中位数复杂度最低为:O(n*logn)。
D.基于比较的排序算法复杂度下界为:O(n*logn)。
注:
(1)Dijkstra
http://jpkc.xaau.edu.cn/sjjg/datastru/zxxx/View/6.5.html
http://jpkc.xaau.edu.cn/sjjg/datastru/zxxx/six%20lesson/642.html
一个按路径长度递增的次序产生最短路径的算法。
该算法的基本思想是:
设置两个顶点的集合S和T=V-S,集合S中存放已找到最短路径的顶点,集合T存放当前还未找到最短路径的顶点。初始状态时,集合S中只包含源点v0,然后不断从集合T中选取到顶点v0路径长度最短的顶点u加入到集合S中,集合S每加入一个新的顶点u,都要修改顶点v0到集合T中剩余顶点的最短路径长度值,集合T中各顶点新的最短路径长度值为原来的最短路径长度值与顶点u的最短路径长度值加上u到该顶点的路径长度值中的较小值。此过程不断重复,直到集合T的顶点全部加入到S中为止。
伪代码:
1 function Dijkstra(G, w, s)
2 for each vertex v in V[G] // 初始化
3 d[v] := infinity
4 previous[v] := undefined
5 d[s] := 0
6 S := empty set
7 Q := set of all vertices
8 while Q is not an empty set // Dijstra算法主体
9 u := Extract_Min(Q)
10 S := S union {u}
11 for each edge (u,v) outgoing from u
12 if d[v] > d[u] + w(u,v) // 拓展边(u,v)
13 d[v] := d[u] + w(u,v)
14 previous[v] := u