Il y a ce code:

print isinstance(2147483647, int) # True - max signed 32-bit integer
print isinstance(4294967295, int) # False - max unsigned 32-bit integer
print isinstance(18446744073709551615, int) # False - max unsigned 64-bit integer

Comment vérifier si la valeur est un entier 32 bits non signé et un entier 64 bits non signé?

1
scdmb 13 déc. 2011 à 13:10

3 réponses

Meilleure réponse

Si vous vouliez simplement vérifier si le nombre tient dans un entier 32 bits ou un entier 64 bits, il existe une méthode appelée bit-length que vous pouvez vérifier et déterminer si le résultat est inférieur à 32 ou non.

Par exemple.

>>> def Is32or64(x):
    return 32 if x.bit_length() < 32 else 64

>>> Is32or64(2**30)
32
>>> Is32or64(2**40)
64 
5
Abhijit 13 déc. 2011 à 09:43

Vous ne pouvez pas rechercher de types entiers non signés car il n'y a pas de types entiers non signés.

Python 2 a deux types d'entiers: int (plage fixe, dépendant de la plateforme, 32 bits au moins) et long (entier infiniment grand). Les deux sont signés.

Dans votre exemple, la première valeur a le type int et les deux autres sont long. Si vous voulez savoir si une valeur correspond à la plage d'un entier 64 bits, faites une comparaison ordinaire:

if (x >= 0) and (x < 2**64):
    pass

À partir des versions Python 2.7 et 3.1, il existe une méthode int.bit_length() qui calcule le nombre de bits d'une représentation binaire du nombre, en ignorant le signe.

2
hamstergene 13 déc. 2011 à 09:57

Vous pouvez utiliser 2**x:

2147483647 == 2**32
18446744073709551615 == 2**64
0
tito 13 déc. 2011 à 09:16
8486654