我需要将某些给定值转换为16位浮点数。 但问题是给定的数字范围从 2 -63 到 2 63 ,这是出于半精度浮点数的范围,所以我被告知使用代码字。 但我不知道该怎么做。
我可以将数字转换为半精度浮点,但范围正在产生问题。
我在google上搜索过,无法找到与代码字有关的任何内容。
这些数字存储在一个文件中。以下是一些例子..
1.25,0,2 7 ,2 63 ,2 -62
有人可以给我任何关于使用代码字的提示或任何阅读材料吗?
答案 0 :(得分:0)
这是另一个提示更优雅代码的提示 - 因为你得到的数字介于2 ^ 63和2 ^ -63之间(你转换为16位浮点实数)你实际上并不需要考虑全部63因为它们的最大总和在上面有界限(在其他情况下,最低有效位不会影响整体"总和"当转换为16位时 - 它有点像"添加零") 。
答案 1 :(得分:0)
另一个提示 - 如果用代码字表示你的意思是使用自己的数据结构。然后我会读到使用中文余数定理,该定理可用于使用较短位长的小整数来编码非常大的整数,如-5 + 2 ^ 63。 换句话说,它是一种众所周知的方式来表示这种如此大的整数 整数相对较小。
这个想法用于一些大的整数例程。 一旦你有办法用这个定理表示这些大整数(对于你的“代码字”,如果这就是你的意思),那么有很多方法可以将它转换为16位浮点数。
我希望有所帮助。