Poedu_计算机基础_第一次考试_20160831 试卷原题及改正

时间:2021-03-21 20:53:13

程序是如何运行的 试卷一

1. CPU中不含有以下选项中的: C

A:  运算器

B:  寄存器

C:  内存

D:  时钟

2. CPU中负责计时的部件是:F

E:  程序计数寄存器

F:  时钟

G:  控制器

H:  靠人来计时

3. 对于汇编以下说法正确的是:J

I:  汇编需要编译成机器码

J:  汇编是助记符,和机器码一一对应

K:  汇编是给CPU看的

L:  编译器编译出来的是汇编

4. 以下哪个寄存器名是错的:D

A:  累加寄存器

B:  程序计数器

C:  标志寄存器

D:  控制寄存器

5. 以下哪个说法是错误的:C

A:  计算机能够执行分支是因为标志寄存器

B:  计算机能够执行循环是因为程序计数器

C:  控制器控制程序的分支及循环运行

D:  标志寄存器负责保存计算后结果的状态

6. 请写出二进制,八进制,十进制,十六进制(9之后使用字母顺序)

二进制

八进制

十进制

十六进制

00000000

0

0

0

00000001

1

1

1

00000010

2

2

2

00000011

3

3

3

00000100

4

4

4

00000101

5

5

5

00000110

6

6

6

00000111

7

7

7

00001000

10

8

8

00001001

11

9

9

00001010

12

10

A

00001011

13

11

B

00001100

14

12

C

00001101

15

13

D

00001110

16

14

E

00001111

17

15

F

00010000

20

16

10

00010001

21

17

11

00010010

22

18

12

00010011

23

19

13

 注:书写规范:
八进制前面+0  
    如01 02 017
十六进制前面+0x 
如0x00 0x0A

7. 请使用公式写出二进制数 011100001100000111000对应的十进制,需要解题步骤:

  011100001100000111000=1*(2^3+2^4+2^5+2^11+2^12+2^17+2^18+2^19)

    =  8+16+32+ 2048+4096+131072+262144+524288

    =923704

注:更简单的算法:把二进制变为十六进制,再由十六进制转十进制!

    0 1110 0001 1000 0011 1000

  =            E    1          8       3       8

 = 14*16^4+1*16^3+8*16^2+3*16^1+8*16^0

 =923704

8. 假设一个32位带符号(有负数)的二进制数 0111 0010 1110 1111 0011 1111 0000 1100,请写出对应的十进制数

   0111 0010 1110 1111 0011 1111 0000 1100=2^2+2^3+2^8+2^9+2^10+2^11+2^12+2^13+2^16+2^17+2^18+2^19+2^21+2^22+2^23+2^25+2^28+2^29+2^30=192 828 1868


注:首位为0,为正数,简易算法同上题

 

9. 假设一个32位带符号(有负数)的二进制数 1111 0010 0010 1111 0011 0110 0000 1100,请写出对应的十进制数

   反码:1000 1101 1101 0000 1100 1001 1111 0011

   补码:1000 1101 1101 0000 1100 1001 1111 0100=-231786996


  注:首位为1,为负数,首位后的二进制与上题一样,但是这不意味着就是上题答案加上负号就可以。

         因为负数都是用补码表示的,在进行计算前要先将补码还原,即对补码取反加1(符号位除外)

         如此得出的数值才是正确的

10. 假设二进制数(16位)0101 1111 0000 1111左移3位,结果是:

二进制:1111 1000 0111 1000

十进制:30840

十六进制:F 8 7 8

 

11. 假设二进制数(16位)0101 1111 0000 0000逻辑右移3位,结果是:

二进制:0000 1011 1110 0000

十进制:3040

十六进制:0 B E 0

 

 注:逻辑右移:霸道型右移,空位直接补0

         ==>逻辑右移后可能会出现“负变正”的现象

 

12. 假设二进制数(16位)0101 1111 0000 0000算数右移3位,结果是:

二进制:0000 1011 1110 0000

十进制:3040

十六进制:0BE0

 

 

 注:算术右移:温柔型右移,根据首位补0或1

==>本题体现不大,下题比较明显

 

13. 假设二进制数(16位)1101 1111 0000 0000算数右移3位,结果是:

二进制:1111 1011 1110 0000

十进制:-1056

十六进制:FBE0

 

注:首位为1,算术右移,空位根据首位补1

 

14. 请问以下代码输出的结果是 B

Int main()

{

Float sum = 0;

For( int I = 0; i< 100; i++)

{

Sum += 0.1;

}

Printf(“%f”,sum);

}

A: 10.0000000

B: 10.0000002

C: 不知道

D: 1.0000000

 

注:计算机累加浮点数,肯定会有偏差,但是偏差大小是不知道的,即它的结果是不确定(随机)的!(未定义操作)


15. 内存为什么有地址,我们是通过什么计算出内存的大小的?

便于管理内存中的数据,

内存大小=寻址大小(地址引脚的数量)*每次可读写的数据大小(数据引脚)

 

 注:(我的理解)

1.内存的结构中包含有许多的引脚,引脚可分为:电源引脚,地址引脚,数据引脚,控制引脚

=>而内存中的内容的操作顺序是这样的:先通过地址引脚确定位置,再通过数据引脚对数据进行操作

=> 为了使程序员能够操作内存中的数据,有必要给每个数据一个确定的位置信息,使得我们可以直接找到它

                             =>因此,根据地址引脚的通电状态,给每一内存都赋予一个标记,这就是地址

         2.内存大小=寻址大小(地址引脚的数量)*每次可读写的数据大小(数据引脚的多少)

 

16. 编程时读取和写入内存速度最快的数据结构是: A

A:  数组

B:  栈

C:  队列

D:  链表

17. 请说明下上一题中几种数据结构的优势

数组:整体取出一块内存,通过基址与变址可以快速读写数据,避免CPU繁重的计算

栈:便于记录和回溯

队列:先进先出

链表:方便数据的插入、删除等操作


注:数组:快速的读写

     栈:便于记录查询、回溯,数据进出顺序是:先进后出

队列:顺序查询、顺序记录,数据的进出顺序:先进先出

链表:方便进行数据的插入、删除等操作

 

18. 程序是在内存中执行的:B

A:  对

B:  错


注:翻看第一节课的笔记,程序->CPU的过程中,exe是加载进内存进行执行的

19. 所有的数据都是一直(包括关机时)存储在:C

A:  内存

B:  CPU

C:  硬盘

D:  我脑子里