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
- 解码浮点数
- 浮基数
- 浮点数
- 浮点数
- 浮点精度
- 整数解码浮点数
我正在尝试用 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
- 解码浮点数
- 浮基数
- 浮点数
- 浮点数
- 浮点精度
- 整数解码浮点数