定点数表示疑问:8位二进制下0.02的表示方法咨询
分析这种8位归一化数值表示及0.02的转换
明确表示规则
这不是标准浮点格式,而是一种线性归一化定点表示,具体规则如下:
- 8位结构:
[符号位S][7位尾数M] - 符号位定义:0代表正数,1代表负数
- 数值映射公式:
- 正数(S=0):
数值 = M / 127(M为7位二进制对应的十进制整数,范围0~127) - 负数(S=1):
数值 = -1 + (M / 127)(M=0对应-1,M=127对应0)
- 正数(S=0):
验证规则匹配性:
- 最大值1:S=0,M=127(二进制
1111111),计算得127/127=1,符合描述 - 最小值-1:S=1,M=0(二进制
0000000),计算得-1+0=-1,符合描述
计算0.02的表示
0.02为正数,因此符号位S=0,接下来推导尾数M:
- 计算M的理论值:
M = 0.02 * 127 = 2.54 - 由于M必须是整数(7位二进制仅能表示0~127的整数),需做取整处理:
- 截断取整:取整数部分2,对应二进制
0000010,最终8位表示为0_0000010 - 四舍五入:2.54四舍五入为3,对应二进制
0000011,最终8位表示为0_0000011
- 截断取整:取整数部分2,对应二进制
两种表示的误差:
- 截断后对应数值:
2/127≈0.0157,与0.02的误差约-0.0043 - 四舍五入后对应数值:
3/127≈0.0236,与0.02的误差约+0.0036
内容的提问来源于stack exchange,提问作者den251
相关产品推荐
相关产品推荐

