elisp:number can';t是否大于(expt 2 60)?

elisp:number can';t是否大于(expt 2 60)?,lisp,elisp,integer-overflow,Lisp,Elisp,Integer Overflow,在上一篇文章中,显示了您可以在elisp中表示任何数字,因为它会自动切换到big_nums 但是当我调用(setq long_max(expt 2 60))时,我得到 1152921504606846976 当我调用(setq long_max(expt 2 61))时,我得到 -2305843009213693952 0 当我调用(setq long_max(expt 2 62))时,我得到 -2305843009213693952 0 有什么好处?我发现上面链接中的数字327683

在上一篇文章中,显示了您可以在elisp中表示任何数字,因为它会自动切换到big_nums

但是当我调用
(setq long_max(expt 2 60))
时,我得到

1152921504606846976
当我调用
(setq long_max(expt 2 61))
时,我得到

-2305843009213693952
0
当我调用
(setq long_max(expt 2 62))
时,我得到

-2305843009213693952
0
有什么好处?我发现上面链接中的数字3276832768也给了我0。为什么我不能得到同样大小的整数。在上下文中,我将SpaceMac与组织模式结合使用


谢谢

默认情况下,Emacs Lisp没有bignums,如下所述:(它还引用了强大的
calc
包)


您看到的环绕行为是因为计算是使用模块化算术进行的:请参见。

Emacs Lisp在默认情况下没有bignums,如下所述:(它还引用了功能强大的
calc
包)


您看到的环绕行为是因为计算是使用模块化算法进行的:请参见。

实际上,在您提到的帖子中,@Kaz给出的答案就是您想要的。
(搜索“Emacs Lisp将整数打包成”)

实际上,在你提到的帖子中,@Kaz给出的答案就是你想要的。
(搜索“Emacs Lisp packs integers into”)

您之前提到的文章不是关于elisp的,而是关于Lisp的其他方言,可能是普通Lisp,它确实有bignum(和有理数,以及复数)。从现代Lisp的标准来看,Elisp是相当初级的(甚至从设计时的Lisp标准来看也是如此)。你之前提到的文章不是关于Elisp的,而是关于Lisp的其他方言,可能是普通Lisp,它确实有bignum(和有理数,以及复数)。从更现代的Lisps标准来看,Elisp是相当初级的(甚至从设计时的Lisps标准来看)。