Dans la console Python :
Me donne :
Pourquoi ? Quelqu'un peut-il expliquer ce cas particulier m’en binaire ?
Dans la console Python :
Me donne :
Pourquoi ? Quelqu'un peut-il expliquer ce cas particulier m’en binaire ?
Qu'est - int(True)
? C'est - 1
.
Qu'est - 1
? C'est:
00000001
Qu'est - ~1
? C'est:
11111110
Qui est - -2
(complément à Deux)1
1 Flip tous les morceaux, ajouter 1 au nombre obtenu et interpréter le résultat comme une représentation binaire de l'ampleur et de l'ajout d'un signe négatif (puisque le nombre commence par 1):
11111110 → 00000001 → 00000010
↑ ↑
Flip Add 1
Qui est de 2, mais le signe est négatif depuis le MSB est de 1.
Le Python bool
type est une sous-classe de int
(pour des raisons historiques; les booléens ont été ajoutées en Python 2.3).
Depuis int(True)
est 1
, ~True
est ~1
est -2
.
Voir PEP 285 pourquoi bool
est une sous-classe de int
.
Si vous voulez que le booléen inverse, utiliser not
:
>>> not True
False
>>> not False
True
Si vous avez voulu savoir pourquoi ~1
est -2
, c'est parce que vous êtes en inversant tous les bits d'un entier signé; 00000001
devient 1111110
qui en a signé nombre entier est un nombre négatif, voir en complément à Deux:
>>> # Python 3
...
>>> import struct
>>> format(struct.pack('b', 1)[0], '08b')
'00000001'
>>> format(struct.pack('b', ~1)[0], '08b')
'11111110'
lorsque la première 1
bits signifie que la valeur est négative, et le reste des bits codent l'inverse du nombre positif, moins un.
~True == -2
est pas surprenant si l' True
moyen 1
et ~
moyen au niveau du bit d'inversion...
...à condition que
True
peut être considérée comme un entier etModifications:
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.