小白的CTF学习之路6——阶段测评

刚才考了自己一次,下面我把题和答案放到下面

CPU中不含有以下选项中的  C

A:     运算器   

B:      寄存器

C:     内存

D:     时钟

这是一道送分题,CPU包含以下几种原件

寄存器

控制器

运算器

时钟

 

CPU中负责计时的部件是  F

 

E:      程序计数寄存器

 

F:      时钟

 

G:     控制器

 

H:     靠人来计时

答案已解决,妈的,错的离谱,选的F,时钟相当于我们的计算频率,时钟脉冲:CPU内部有个石英晶振,它的正常振动频率就是你CPU的主频,时钟脉冲就是每次振动产生的脉冲,之所以叫时钟,因为它是整个系统的时间工作基准

 

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

 

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

 

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

 

K:      汇编是给CPU看的

 

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

其实应该是经过编译器后和机器语言对应,只是为了让我们书写从而改变了些顺序。

 

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

 

A:     累加寄存器

 

B:      程序计数器

 

C:     标志寄存器

 

D:     控制寄存器

CPU寄存器分为以下几种:

  • 累加寄存器
  • 标志寄存器
  • 程序计数器
  • 基址寄存器
  • 变址寄存器
  • 指令寄存器
  • 通用寄存器

 

以下哪个说法是错误的  C

 

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

 

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

 

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

 

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

控制分支是标志寄存器的任务,循环运行是程序计数器的作用,控制器负责控制数据读取,写出,更换等操作

 

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

 

1   1  0X01

 

10  2  0X02

 

11  3  0X03

 

100 4  0X04

 

101 5  0X05

 

110 6  0X06

 

111 7  0X07

 

1000 8  0X08

 

1001 9  0X09

 

1010 10  0X0A

 

1011 11  0X0B

 

1100 12  0X0C

 

1101 13  0X0D

 

1110 14  0X0E

 

1111 15  0X0F

 

10000 16  0X10

 

10001 17  0X11

 

10010 18  0X12

 

10011 19  0X13

 

10100 20  0X14

八进制没学,为了方便写的不是非常正规,转换方法很简单,不说了

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

011100001100000111000=2^3+2^4+2^5+2^11+2^12+2^13+2^18+2^19=8+16+32+2048+4096+131072+262144=923704

这么算会累死人的,今天学了个新的方法

二进制转16进制

二进制数:0 1110 0001 1000 0011 1000

对应16进制:0 e 1 8 3 8

平方求和:8  + 3 * 16 + 8 * 16^2 + 1*16^3 + 14*16^4

将二进制转换成十六进制,然后再用这个十六进制求十进制就会方便很多

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

 开头数字为0说明为正数,正常求和

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

开头字母为1说明为负数,去掉符号位并减一之后取反再做运算

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

1111 1000 0111 1000

没什么好说的

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

0000 1011 1110 0000

题目说了逻辑右移,那就正常位移就可以了

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

0000 1011 1110 0000

虽说算术右移,但首位是0,无需加一

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

1111 1011 1110 0000

此二进制首位为1,需要进行补一

  1. 请问以下代码输出的结果是 C

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

前面一章重点讲过此环节,计算机在做浮点数运算时很容易出不可控误差,解决方法一忽略,二将浮点数变为整数运算

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

内存中有许多空间,地址的存在可以让cpu更快捷的找到所需数据的位置

由他的寻址位数*数据得出

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

A:     数组

B:     

C:     队列

D:     链表

之前说过计算机在做累加运算时是最快的,数组正好符合这一要求

 

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

 

数组,读取速度快,但删除很慢

 

栈,有记录,可回溯

 

链表:删除,插入,添加  速度快

 

队列:便于数据进行队列操作

 

程序是在内存中执行的 A

 

A:    

 

B:     

 

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

 

A:     内存

 

B:      CPU

 

C:     硬盘

 

D:     我脑子里

常识问题

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/xiaoshenlong/p/10687044.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值