我被要求使用以下规范/规则处理以下问题...
数字从左到右分成16位,如下所示:
1位符号标志,应设置为负数,否则清除
超额63中持有7位指数
8位有效数,标准化为1.x,仅存储小数部分 - 如IEEE 754中所示
以十六进制给出答案,数字-18如何在此系统中表示?
请告诉我这是否正确,或者我做错了,可以应用哪些更改。谢谢你:)
答案 0 :(得分:1)
由于您似乎已经分配了许多此类问题,因此编写自动答案检查程序来验证您的工作可能会很有用。我在Python中组装了一个快速转换器:
def convert_from_system(x):
#retrieve the first eight bits, and add a ninth bit to the left. This bit is the 1 in "1.x".
significand = (x & 0b11111111) | 0b100000000
#retrieve the next seven bits
exponent = (x >> 8) & 0b1111111
#retrieve the final bit, and determine the sign
sign = -1 if x >> 15 else 1
#add the excess exponent
exponent = exponent - 63
#multiply the significand by 2^8 to turn it from 1.xxxxxxxx into 1xxxxxxxx, then divide by 2^exponent to get back the decimal value.
result = sign * (significand / float(2**(8-exponent)))
return result
for value in [0x4268, 0xC320]:
print "The decimal value of {} is {}".format(hex(value), convert_from_system(value))
结果:
The decimal value of 0x4268 is 11.25
The decimal value of 0xc320 is -18.0
这证实-18确实转换为0xC320。