Sujet : Bis: Que fait ce programme ?
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.sci.maths fr.comp.lang.pythonDate : 01. Oct 2022, 14:40:49
Autres entêtes
Organisation : There's no cabale
Message-ID : <th9g13$o57$1@cabale.usenet-fr.net>
References : 1
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0 SeaMonkey/2.53.1
Le 30/09/2022 à 07:17, ast a écrit :
Devinette: Que retourne cette petite fonction python
(m et n sont 2 entiers naturels)
def f(m, n):
while n:
m, n = m ^ n, (m & n) << 1
return m
Même question, en ajoutant un simple ~ à la troisième ligne :
def f(m, n):
while n:
m, n = m ^ n, (~m & n) << 1
return m
pour ceux qui ne connaissent pas python
"while n" c'est "pendant que n est non nul"
^ est l'opérateur "ou exclusif" bit à bit
& est le "et" bit à bit
<< 1 décalage à gauche bit à bit et ajout d'un 0 à droite
a, b = c, d affectation simultanée a <- c et b <- d
Toujours pour ceux qui ne connaissent pas python :
~ est l'opérateur « inverser tous les bits » (les 1 deviennent des 0
et les 0 deviennent des 1)
En particulier, si m est un nombre entier, -m est égal à (~m + 1)
-- Olivier Miakinen