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