228、为什么十进制的0.2不能用有限位数精确表示?
对0.2进行除法运算时,商的序列会重复,无法得到精确商,所以不能用有限位数精确表示。
229、给定二进制值11011.01011,其规范化后的值是多少?
将二进制点左移,直到二进制点左侧出现单个“1”。对于 11011.01011 ,左移4位得到 1.101101011 ,所以规范化后的值是 1.101101011×2⁴ 。
230、给定二进制值 0000100111101.1,其规范化后的值是多少?
要将二进制数 0000100111101.1 规范化,需移动二进制小数点,使小数点左侧只有一个“1”。
- 原始数:
0000100111101.1 - 移动小数点:左移 4 位后得到
1.001111011 - 移动位数:4(正指数)
规范化结果:
- 尾数(mantissa) :
1.001111011 - 指数(exponent) :
4
231、NaN有哪两种类型?
NaN有两种类型,分别是安静型NaN(Quiet NaN,QNaN)和信令型NaN(Signaling NaN,SNaN)。
- 安静型NaN(QNaN) :可在多数算术运算中传播而不引发异常。
- 信令型NaN(SNaN) :可用于生成浮点无效操作异常。
232、FLD指令允许的最大数据类型是什么,它包含多少位?
FLD指令允许的最大数据类型是REAL10,它包含80位。
233、FSTP指令与FST指令有何不同?
-
FST指令将浮点操作数从 FPU 栈顶复制到内存, 不弹出栈 ; -
FSTP指令在执行与FST相同操作后会 弹出栈 ; -
FSTP还有一个额外格式FSTP m80fp,即复制ST(0)到m80fp并 弹出栈 。
234、FADD指令可以使用哪些类型的操作数?
FADD指令可使用的操作数类型有:
-
m32fp(32位浮点操作数) -
m64fp(64位浮点操作数) -
ST(0) -
ST(i)
其中, m32fp 和 m64fp 为内存操作数, ST(0) 和 ST(i) 为寄存器操作数。此外,当不指定操作数时,是将 ST(0) 加到 ST(1) 并弹出栈。
235、FISUB指令与FSUB指令有何不同?
-
FISUB指令会先将源操作数转换为双扩展精度浮点格式,再从ST(0)中减去该操作数,支持m16int和m32int格式; -
FSUB指令若使用内存操作数,是从ST(0)中减去内存操作数且不弹出栈; -
FSUBP指令在执行减法后会弹出栈顶元素。
236、哪条指令将整数操作数加载到ST(0)中?
FILD指令将16位、32位或64位有符号整数源操作数转换为双精度浮点数,并将其加载到ST(0)中。
237、FPU控制字中的哪个字段可以让你更改处理器的舍入模式?
FPU控制字中的RC字段可以让你更改处理器的舍入模式。
238、请展示二进制数101.1的IEEE单精度编码
IEEE单精度浮点数采用32位编码,具体编码规则如下:
- **1位符号位(S)**:0表示正数,1表示负数
- **8位指数位(E)**:采用偏移量为127的移码表示
- **23位尾数位(M)**:采用原码表示
对于一个二进制数,首先将其规范化为 `1.xxx×2^n` 的形式,然后按照上述规则分别确定符号位、指数位和尾数位的值。
以二进制数 `101.1` 为例:
1. 规范化后为 `1.011×2^2`
2. **符号位 S** 为 0(表示正数)
3. **指数位 E** 为 `2 + 127 = 129`,其二进制表示为 `10000001`
4. **尾数位 M** 为 `011`,后面补20个0
最终的IEEE单精度编码为:
0 10000001 01100000000000000000000
239、将分数 5/8 转换为二进制实数。
首先,将 5/8 拆分为 1/2 + 1/8。
- 1/2 对应的二进制实数是
0.1 - 1/8 对应的二进制实数是
0.001

最低0.47元/天 解锁文章
1391

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



