在之前的帖子中,someone表示您可以在elisp中表达任何数字,因为它会自动切换到big_nums。
但是当我打电话给(setq long_max (expt 2 60))
时,我得到了
1152921504606846976
当我致电(setq long_max (expt 2 61))
时,我得到了
-2305843009213693952
当我致电(setq long_max (expt 2 62))
时,我得到了
0
是什么给出的?我发现上面链接的数字,32768 32768,也让我0。为什么我没有获得相同大小的整数。对于上下文,我使用Spacemacs和Org-Mode
谢谢!
答案 0 :(得分:2)
默认情况下,Emacs Lisp没有bignums,如下所示:bignum in emacs/elisp(也引用了强大的calc
包)。
您看到的环绕行为是因为使用模运算进行计算:请参阅https://www.gnu.org/software/emacs/manual/html_node/elisp/Integer-Basics.html#Integer-Basics。
答案 1 :(得分:1)
实际上在你提到Why in LISP , there is no limitation for number?的帖子中,@ Kaz给出的答案正是你要找的。 (搜索" Emacs Lisp将整数打包成")