整数lisp的最小值

整数lisp的最小值,lisp,common-lisp,Lisp,Common Lisp,我正在尝试用lisp检索整数的最小值。我发现 most-negative-fixnum 变量,该变量应表示可能的最小值。无论我用它做什么都是错误的 变量“MOST-NEGATIVE-FIXNUM”未绑定 在lisp中有没有具体的方法来获取变量的值?我对此的研究没有结果 谢谢它应该按如下方式工作,例如使用Common Lisp实现: CL-USER> (lisp-implementation-type) "SBCL" CL-USER> (lisp-implementation-ve

我正在尝试用lisp检索整数的最小值。我发现

most-negative-fixnum 
变量,该变量应表示可能的最小值。无论我用它做什么都是错误的

变量“MOST-NEGATIVE-FIXNUM”未绑定

在lisp中有没有具体的方法来获取变量的值?我对此的研究没有结果


谢谢

它应该按如下方式工作,例如使用Common Lisp实现:

CL-USER> (lisp-implementation-type)
"SBCL"
CL-USER> (lisp-implementation-version)
"1.3.12.51-868cff4"
CL-USER> most-negative-fixnum
-4611686018427387904
[…]变量,该变量应表示尽可能低的数字

这将是最低的可能。你也有很多数字:

CL-USER> (* 10000 most-negative-fixnum)
-46116860184273879040000

它应按如下方式工作,例如使用Common Lisp实现:

CL-USER> (lisp-implementation-type)
"SBCL"
CL-USER> (lisp-implementation-version)
"1.3.12.51-868cff4"
CL-USER> most-negative-fixnum
-4611686018427387904
[…]变量,该变量应表示尽可能低的数字

这将是最低的可能。你也有很多数字:

CL-USER> (* 10000 most-negative-fixnum)
-46116860184273879040000
因为Common Lisp规范中包含了一部分,所以从语言的角度来看,数值的下限是没有限制的

由于机器的内存有限,您将体验到,您的机器所能拥有的数字是有限的。一个实现不可能知道这个数字或者在没有实际尝试的情况下向您展示它,或者该实现可能有一些关于这个数字的想法。在没有开销的情况下,您可以使用可用内存(以字节为单位)作为估计值,每个可用字节将有8位。例如,我的机器大约有11GB可用空间,所以我想我可以使用10GB作为实际存储空间和符号,即80G位作为实际数字-2^80G+1或~-10^2900000000。您将无法打印它,因为您没有可用内存。

因为Common Lisp的规范中有一部分,所以从语言的角度来看,您可以拥有的数字值的下限是没有限制的


由于机器的内存有限,您将体验到,您的机器所能拥有的数字是有限的。一个实现不可能知道这个数字或者在没有实际尝试的情况下向您展示它,或者该实现可能有一些关于这个数字的想法。在没有开销的情况下,您可以使用可用内存(以字节为单位)作为估计值,每个可用字节将有8位。例如,我的机器大约有11GB可用空间,所以我想我可以使用10GB作为实际存储空间和符号,即80G位作为实际数字-2^80G+1或~-10^2900000000。您将无法打印它,因为您没有可用的内存。

刚刚尝试输入SBCL的REPL,它按预期工作。您使用的是哪种Lisp实现?如果您使用的是common Lisp,那么我使用的是common Lispasking@trolkura:Common Lisp是一种语言。但是是哪种实现。您可能希望确切地显示您正在做什么。编辑您的问题以显示什么输入导致什么结果。@trolkura如果
most negative fixnum
(或者,要小心,
cl:most negative fixnum
)是一个错误,那么您不太可能使用Common Lisp。只需尝试输入SBCL的REPL,就可以正常工作。您使用的是哪种Lisp实现?如果您使用的是common Lisp,那么我使用的是common Lispasking@trolkura:Common Lisp是一种语言。但是是哪种实现。您可能希望确切地显示您正在做什么。编辑您的问题以显示什么输入导致什么结果。@trolkura如果
most negative fixnum
(或者,要小心,
cl:most negative fixnum
)是一个错误,那么您不太可能使用Common Lisp。现在有趣的是为什么会出现-2^62。第63位怎么了?@BartvanNierop 64位减去1位表示符号,1位表示将值标记为“立即”。我知道符号位,“立即”是什么意思?@BartvanNierop更准确地说:啊,这很有意义。非常感谢!现在有趣的是为什么是-2^62。第63位怎么了?@BartvanNierop 64位减去1位表示符号,1位表示将值标记为“立即”。我知道符号位,“立即”是什么意思?@BartvanNierop更准确地说:啊,这很有意义。非常感谢!