Common Lisp 中浮点数的字节表示

Byte representation of floats in Common Lisp

我正在尝试用 Common Lisp 编写一些东西来以特定的二进制格式读写数据,作为学习 Lisp 的一种方式,并希望最终得到一个有用的(或至少有趣的)工具。我从 the parser project in Practical Common Lisp 开始,并从那里开始积累。我需要的一件事是任意长度(以字节为单位)的浮点数。 CL 为无符号整数提供 ldb,从那里开始,有符号整数并不难构建——是否有任何类似的有用功能来获取和设置浮点数的符号、指数和小数部分?我不想为此使用库,因为部分目的是练习编写代码,但我也不想花时间重新实现已经内置的内容。

如果您正在读取二进制格式的浮点数,则需要为其实现您自己的解析器。 它很可能是一个 IEEE 浮点编码值。您可以在维基百科上找到您需要的所有信息:https://en.wikipedia.org/wiki/IEEE_754

根据在 CL 中获取浮点值的各个组成部分,您可以在此处使用各种函数:http://clhs.lisp.se/Body/f_dec_fl.htm

  • 解码浮点数
  • 浮基数
  • 浮点数
  • 浮点数
  • 浮点精度
  • 整数解码浮点数