89 votes

Complément de deux en Python

Existe-t-il une fonction intégrée en python qui convertira une chaîne binaire, par exemple '111111111111', en entier de complément des deux -1?

99voto

travc Points 401

Le complément de deux soustrait `` si le bit le plus élevé est 1. En prenant 8 bits par exemple, cela donne une plage de 127 à -128.

Une fonction pour le complément de deux d’un int...

Partir d’une chaîne binaire est particulièrement facile...

Un peu plus utile pour moi est de passer des valeurs hexadécimales (32 bits dans cet exemple)...

22voto

Scott Griffiths Points 8867

Il n’est pas intégré, mais si vous voulez des nombres de longueur inhabituels, vous pouvez utiliser le module bitstring .

Le même objet peut être créé de manière équivalente de plusieurs manières, notamment :

Il se comporte simplement comme une chaîne de bits de longueur arbitraire et utilise des propriétés pour obtenir différentes interprétations:

12voto

gnibbler Points 103484
<pre><code></code><p>Cela fonctionne parce que :</p><blockquote> <p>Le complément de deux d’un nombre binaire est défini comme la valeur obtenue en soustrayant le nombre d’une grande puissance de deux (en particulier, de 2^N pour un complément de N-bittwo ). Le complément du nombre par les deux se comporte alors comme le négatif du nombre original dans la plupart des calculs arithmétiques , et il peut coexister avec les nombres positifs de manière naturelle.</p> </blockquote></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X