Deutsch   English   Français   Italiano  
<th9g13$o57$1@cabale.usenet-fr.net>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!.POSTED!not-for-mail
From: Olivier Miakinen <om+news@miakinen.net>
Newsgroups: fr.sci.maths,fr.comp.lang.python
Subject: Bis: Que fait ce programme ?
Date: Sat, 1 Oct 2022 15:40:49 +0200
Organization: There's no cabale
Lines: 38
Message-ID: <th9g13$o57$1@cabale.usenet-fr.net>
References: <63367bdd$0$25804$426a74cc@news.free.fr>
NNTP-Posting-Host: 37.167.152.183
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Trace: cabale.usenet-fr.net 1664631651 24743 37.167.152.183 (1 Oct 2022 13:40:51 GMT)
X-Complaints-To: abuse@usenet-fr.net
NNTP-Posting-Date: Sat, 1 Oct 2022 13:40:51 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101
 Firefox/60.0 SeaMonkey/2.53.1
In-Reply-To: <63367bdd$0$25804$426a74cc@news.free.fr>
Bytes: 1862

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