推 Yshuan: 我猜是python直譯器 根據平台不同就會有不同的size實作 06/30 14:37
→ mikapauli: python整數類似tuple,每多30位tuple長度多1 06/30 15:32
→ mikapauli: 0類似空的tuple,正好空的tuple也是24bytes 06/30 15:33
→ mikapauli: 只是tuple長度多1是多8bytes(因為64-bit?) 06/30 15:35
為何是30位長度多1 就是這個搞不清
推 HenryLiKing: 感覺你問的問題都蠻深入的耶!!!! 06/30 16:35
※ 編輯: LessonWang (110.28.72.40), 06/30/2017 17:35:38
→ freeunixer: 就只是因為不唸書,伸手牌而已,跟深入有什麼關係? 06/30 18:39
→ freeunixer: 去翻 spec 一定有講.至少人家明明白白清清楚楚有交待, 06/30 18:40
→ freeunixer: 24 bytes 是指那個 int var 是 0 .不是 0 就會往上加. 06/30 18:41
→ freeunixer: 因為 3.x 會自動轉型,所以數值超過原限制就會自動放大 06/30 18:44
→ freeunixer: 3.x 版甚至也沒有所謂明顯的數型分別,依據實際值大小, 06/30 18:52
→ freeunixer: 可以一直放大,放大到吃爆你記憶體為止. 06/30 18:53
→ freeunixer: 每一件東西都只是看點皮毛,然後就開始瞎折騰,要答案, 06/30 18:55
→ freeunixer: 這樣是不行的. 06/30 18:55
→ freeunixer: 如果是學來找問題,不是一般使用,直接 trace code 得了 06/30 19:01
實際應用的問題才是問題 這種刁鑽難解而且有關語言本身底層運作的問題 真的毫無意義 只顯得新手想一步登天而已 我會好好考慮之後問問題的模式 謝謝f大
→ LessonWang: ude/longintrepr.h#L70 06/30 19:13
→ mikapauli: 看了你給的連結,那就應該是因為要和2bytes的版本吻合 06/30 19:25
→ mikapauli: 用我的理解幫你整理一下吧。為了方便轉換到帶號整數, 06/30 19:48
→ mikapauli: 16-bit版的大數實作只用了15bits,以此寫的pow_mod表有 06/30 19:51
→ mikapauli: 32格(2**5)。以此沿用到32-bit版使其只用了30bits。 06/30 19:53
→ mikapauli: 也不可能做長2**31的指數表,用30也合理。 06/30 19:54
原來如此 感謝m大!!
※ 編輯: LessonWang (110.28.72.40), 06/30/2017 19:57:17
※ 編輯: LessonWang (110.28.72.40), 06/30/2017 19:58:23
推 darkgerm: 我覺得這個問題還不錯,幫推一個 06/30 23:59
推 HenryLiKing: 你是不是在做這方面的專題呀? 07/01 00:30
沒有哦
推 Sunal: 推trace code從頭來 這麼關注底層乾脆學C++好了 07/01 00:45
有考慮過xd
※ 編輯: LessonWang (110.28.72.40), 07/01/2017 08:20:53
※ 編輯: LessonWang (110.28.72.40), 07/01/2017 09:14:14