No to je různé pro různé platformy. Ony se ty bity pro tagy a masky řeší až v době překladu pro danou architekturu. A například na x86-64 je (zdá se) rezervován jiný počet bitů, než na 32bitové x86 - ale popravdě je to trošku divočina, ještě to musím prozkoumat (třeba takový PicoLisp to má řešeno přímo ve specifikaci)
Po kratkom googleni to v pripade SBCL bude este trochu komplikovanejsie to rozlisovanie, v pripade fixnum je tam len 1 bit ale lowtag je az 4 bity:
sb-vm:n-fixnum-bits
63
sb-vm:n-fixnum-tag-bits
1
sb-vm:n-lowtag-bits
4
Aj podla CLHS specifikacie je to implementacne zavisle.
(describe (* -1 (expt 2 62)))
-4611686018427387904
[fixnum]
(describe (* 1 (- (expt 2 62) 1)))
4611686018427387903
[fixnum]
28. 4. 2022, 13:19 editováno autorem komentáře