• [^] # Re: Bit_length

    Posté par (site web personnel) . En réponse à la dépêche Python arrive en version 3.1. Évalué à 10.

    Y'avait pas la fonction log en base 2 ?

    Il est possible d'utiliser math.ceil(math.log(abs(x + 1)) / math.log(2)), mais tu vas rapidement perdre en précision car ça utilise des nombres flottants de taille fixe. Le type int de Python3 a une taille illimitée et peut faire plusieurs milliers/millions de bits.

    Exemple :x=2**100-1; math.ceil(math.log(abs(x+1)) / math.log(2)), x.bit_length()
    x=2**100; math.ceil(math.log(abs(x+1)) / math.log(2)), x.bit_length()
    donne (100, 100)
    (100, 101)

    À partir de 100 bits, la fonction utilisant math commence déjà à renvoyer des résultats faux.