【备战软考】刷题篇——选择题中的计算题

这篇文章汇总一下选择题中的计算题。

如题,我们先算一个16*16的点阵汉字占用多大的空间。

16*16是256,因为是点阵,因此一个汉字实际是占用256个bit,换算成Byte是32个。

1000个汉字就是1000*32=32000,再换算成KB,就是32000/1024=31.25KB。

主要考察的还是单位换算,一个Byte是8个bit,然后1024个Byte是一个KB。1024个KB是一个MB,在咱计算机中是以1024为一个量级的。

机器码 1 1111 为原码,补码,反码分别代表的数值是多少。

首先先看源码,因为机器码的第一位是符号位,因此1 1111肯定是个负数,再看数据位1111,转换成十进制就是15,因此当1 1111为原码的时候,它的真值为-15。

接着看反码,为什么不按照顺序先看补码呢?因为补码就是反码+1,因此我们先看反码,看完反码再看补码就简单了。

反码就是在在原码的基础上翻转每个数据位(不翻转符号位),如果是正数的话那么反码是和原码一样的,但是1 1111明显是负数,因此我们可以知道1 1111是翻转后的结果,我们再翻转回去就是原码了,翻转后是1 0000,转换成十进制就是-0。

其实到这一步我们就已经可以选出B了,但是我们还是再看看补码。

因为补码是在反码的基础上+1的(正数的补码,反码,原码是一样的,只有负数才需要操作),因此我们把这个机器码-1,再当成反码计算即可,也就是当它是1 1110的反码,翻转回源码就是1 0001,对应到十进制就是-1。

这类题的解题技巧就是无论是什么码,我们都转换为原码再计算。这边再补充一下移码,移码就是在补码的基础上翻转符号位(无论正负数)。主要是用于浮点数的计算。

这题和第一题差不多,都是计算容量的,但是有些许差别,差别就在于这题中每个像素的颜色数是256色,那么每个像素占的大小就是8bit,也就是1个Byte,因为2^8=256,也就是说8个bit就足够表示出256种颜色了。

一共是1024*1024个像素,一共是1024*1034*1Byte,也就是1MB,因此选择B。

这题要注意的是计算机是如何存储图片的,存储图片是按照以像素为单位存储的,而每个像素是256色,占用的是8bit而不是256bit,不过如果存储的是黑白图片,那么一个像素占用的就是一个bit。

本题的关键在于按字节编址,我们只需要把两个地址转换成十进制然后相减再加一即可(加一是因为这个区间是闭区间,可以参考 [1,2] 这个区间是两个数)。

这边提供一点小技巧,就是把0xDABFF这个地址+1,就变成了0xDAC00,然后再减去0xB3000,这样就不需要再+1了,而且也比较好计算。

还有个小技巧,就是计算0xDAC00 - 0xB300的时候,我们可以当成是计算(0xDAC-0xB30)*16*16。因为这俩数最后两位都是0,我们可以当成是这两个数同时除256(16*16),这样方便我们转换成十进制,不过最后记得把256再乘回来。

计算系统平均访问时间,已知cache的命中率是98%,如果cache没命中,那么需要访问主存,花费的时间是200ns,如果命中,那么只需要访问cache,花费200/4=50ns,因此我们只需要把各自的概率乘上各自花费的时间即可,就是0.98*50+0.02*200=53ns。选择B。

我们提取一下关键点,时钟频率为100MHz(意味着每个时钟周期为1s/1M = 10ns),宽度为32位(表示每个时钟周期可以传输32位的数据),使用burst传输方式。

我们着重了解一下burst,burst传输方式,也称为数据突发或突发传输,是一种高速数据传输方式,它可以在短时间内传输大量的数据。burst传输实质就是只发送一次地址,然后将多个数据包打包成一个大的数据块,然后一次性发送出去。这样做可以减少通信中的延迟时间和占用带宽,提高数据传输效率。很多传输如AHB总线,发送每个数据都要对应发送其地址,而Burst传输则可以在一次传输过程中只发送一次地址,之后地址可以自动累加或保持不变,直到所有数据发送完成。

因此我们要传输128位的数据的话,使用burst的话需要先发送一次地址再发送数据,也就是说一共需要发送五次(一次地址,四次数据),每次是花费10ns,所以是50ns,选择C。

这道题我们可以当成是类似于计算流水线的方法去计算。

单说不太好说,参考一下我下面画的图(比较丑,理解一下粗糙的理工男)

我们需要注意的是将盘快读到缓冲区和将缓冲区送至用户区都是占用了缓冲区的,因此我们分析单缓冲区的时候可以把两个步骤合在一起算是一个,然后一共占用20us,占用了缓冲区的步骤和用户区处理数据花费1us的步骤是可以同时做的,因此总时长是(15+5)*10+1=201

如果是双缓冲区的话,那么同时能用的缓冲区是两个,就如图上图的下面那样,可以将两次的占用缓冲区的步骤重叠一部分,总时长也就是15*10+5+1=156

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值