Python的int.bit_length()的最坏情况时间复杂度

Python的int.bit_length()的最坏情况时间复杂度,python,time-complexity,Python,Time Complexity,当我们调用传递整数n的函数时, 最糟糕的时间复杂度是Ologn还是Python使用一些技巧来改进它,例如在创建n时存储n的最高有效位的位置?,对于内部表示位数少于PY_-SSIZE_T_MAX/PyLong_SHIFT的值–即少于PY_-SSIZE_T_MAX二进制位数–根据内部位数计算,是: msd=PyLongObject*self->ob_数字[ndigits-1]; msd_bits=数字msd中的位; 如果ndigits,对于内部表示位数少于PY_-SSIZE\u T\u MAX/Py

当我们调用传递整数n的函数时, 最糟糕的时间复杂度是Ologn还是Python使用一些技巧来改进它,例如在创建n时存储n的最高有效位的位置?

,对于内部表示位数少于PY_-SSIZE_T_MAX/PyLong_SHIFT的值–即少于PY_-SSIZE_T_MAX二进制位数–根据内部位数计算,是:

msd=PyLongObject*self->ob_数字[ndigits-1]; msd_bits=数字msd中的位; 如果ndigits,对于内部表示位数少于PY_-SSIZE\u T\u MAX/PyLong\u SHIFT的值–即少于PY_-SSIZE\u T\u MAX二进制位数–它是根据内部位数计算的,是:

msd=PyLongObject*self->ob_数字[ndigits-1]; msd_bits=数字msd中的位;
如果NDIGIT是真的很奇怪。。。它如何在logn中运行?如果我们对所有字进行循环,那么它应该在log_Bn中运行,其中B是每个字的位长度,例如,B=64。这段代码对我来说很模糊:/@HilderVítorLimaPereira从来没有一个循环通过所有的单词。它是整数中的字数,表示对于足够大的值变得重要的位数,其中对于真实世界的SSIZE_MAX值,“足够大”是“太大而不存在”。这真的很奇怪。。。它如何在logn中运行?如果我们对所有字进行循环,那么它应该在log_Bn中运行,其中B是每个字的位长度,例如,B=64。这段代码对我来说很模糊:/@HilderVítorLimaPereira从来没有一个循环通过所有的单词。它是整数中的字数,表示对于足够大的值变为有效的位数,其中对于真实世界的SSIZE_MAX值,“足够大”表示“太大而不存在”。