1、什么是算法?
算法是解决问题或实现预期目标的明确的、循序渐进的过程。
2、一个16位寄存器可以存储多少种不同的模式?作为(补码)有符号整数,该寄存器能存储的最大值和最小值分别是多少?作为无符号整数,最大值和最小值又分别是多少?
一个16位寄存器可以存储 $2^{16}$(65536)种不同的模式。
- 作为有符号整数:
- 最大值是 +32767(0x7FFF)
-
最小值是 -32768(0x8000)
-
作为无符号整数:
- 最大值是 65535(0xFFFF)
- 最小值是 0(0x0000)
3、哪 4 个十六进制字节可以表示字符串 “Fred”?
在标准 ASCII 表中, "F" 对应十六进制 0x46 , "r" 对应 0x72 , "e" 对应 0x65 , "d" 对应 0x64 ,所以表示 "Fred" 的 4 个十六进制字节是 0x46726564 。
4、十六进制数 0x45617379 对应的 ASCII 字符串是什么?
Easy。 0x45 对应 'E' , 0x61 对应 'a' , 0x73 对应 's' , 0x79 对应 'y' 。
5、判断对错:二进制数中1的数量越多,数值越大。为什么对或错?
错误。二进制数的大小由其位权和每一位上的数值共同决定,并非仅取决于1的数量。
例如,8位二进制数:
-
00000011(十进制为3) -
00010000(十进制为16)
后者1的数量少但数值更大。
6、为什么为Windows奔腾IV创建的可执行文件在基于PowerPC的Macintosh上无法运行(无特殊软件支持)?
不同操作系统和CPU架构不兼容,可执行文件是针对特定操作系统和CPU架构编写的,Windows奔腾IV和基于PowerPC的Macintosh在操作系统和CPU架构上存在差异,所以前者的可执行文件在后者上无法运行。
7、软件执行特定操作相对于硬件执行的最重要的缺点是什么?
主要缺点是速度。在软件中执行特定操作通常比在硬件中慢约1000倍,在JVM上用Java进行硬核计算可能比用C++编译的机器语言慢得多。不过由于JVM实现者的优化,实际差距没那么大。
8、在复杂指令集计算机(CISC)还是精简指令集计算机(RISC)上,取指 - 执行周期更复杂?为什么?
在复杂指令集计算机(CISC)上取指 - 执行周期更复杂。因为CISC芯片能在不使用CPU内部存储的情况下将一大块数据从一个内存位置移动到另一个内存位置,但对于特定程序或应用,可能只需一条虽长且复杂的机器指令就能完成的操作,在RISC芯片上虽整体取指 - 执行周期可能更快,但需要使用许多指令才能完成。此外,CISC芯片的指令长度可变,从单字节到约15字节不等,这意味着加载一条指令的时间可能是另一条的15倍,在加载长指令时,流水线其余部分可能闲置;而RISC芯片(如PowerPC)所有指令长度相同,可在一次操作中加载,能保持流水线满负荷运行。
9、如何使用移位操作将一个整数乘以8?
可以使用左移操作将一个整数乘以8。因为左移操作相当于将该值乘以2的幂,而8是2的3次方,所以将整数左移3位即可实现乘以8的效果。
例如,在JVM指令集中,使用 ishl 指令,从栈中弹出两个整数,将次顶整数的值向左移动由栈顶整数的低6位所指示的位数(这里是3位),然后将结果压入栈中。
10、计算机如何判断给定的一行是指令、注释还是伪指令?
对于注释,在 Jasmin 中,行中分号( ; )后的部分是注释,汇编器会忽略这些内容;
对于指令,对应计算机机器语言或字节码,许多情况下通过查找汇编器中存储的表得出;
对于伪指令,在 Jasmin 中,大多数以句点( . )开头,如 .class 、 .super 等,用于告知汇编器如何执行任务。
11、如果忘记在Jasmin程序中使用.limit指令,程序还能运行吗?
能运行,但如果省略 .limit stack 和 .limit locals 这两个指令中的任何一个,将会应用默认限制,即仅能容纳一个 int 或 float 类型数据的大小,对于更大类型的数据则不够用。
12、《自然》杂志的一位匿名通讯员发表了一个算法来确定复活节的日期(该算法后来被米斯主教塞缪尔·巴彻证明是正确的,因此被称为巴彻算法),所有的值都是整数,所有的除法都是整数除法,mod表示整数取模(即除法后的余数)。请写出使用巴彻算法确定复活节日期时,根据相关年份y计算a、b、c、d、e、f的公式。
巴彻算法用于确定复活节日期
步骤如下:
- 设相关年份为 $ y $,依次计算以下变量:
- $ a = y \mod 19 $

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



