我试图使用C++以二进制2基形式对真实数据进行编码。用下面的算法计算尾数和指数。
样本数据= 32.3125
std::frexp函数,提取double尾数和int指数。尾数60.5048828125指数,尾数乘以2,减指数1,得到整数尾数。尾数-409 04 80(binary 2 base) FC(exp) 02 05(mantissa)数据编码为09 04 80(binary 2 base) FC(exp) 02 05(mantissa)
这个编码正确吗?在标准(X.690-0207)中,它以不同的形式讨论尾数表示。
8.5.6当使用二进制编码(位8= 1)时,如果尾数M为非零,则它应用符号S、正整数值N和二进制缩放因子F表示,这样:M=S×N×2F。
在规范编码规则和卓越编码规则中,指定了规范化,尾数(除非为0)需要反复移位,直到最小有效位为1。
这是否有必要将尾数转换成这种格式并编码N和F,还是可以像我的示例中那样将F保持为'0‘?
发布于 2022-06-27 13:21:54
你的编码是正确的。请注意,在X.690 11.3中包含了DER的要求,并且您已经满足了它们(您使用的是基2,尾数为奇数,F= 0)。F != 0仅在使用8或16基数编码时才需要。
https://stackoverflow.com/questions/72755246
复制相似问题