| Deutsch English Français Italiano |
|
<th7124$1l9b$1@gioia.aioe.org> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!newsreader4.netcologne.de!news.netcologne.de!news.uzoreto.com!aioe.org!Ty0ksHdy1VaTVTw6oc1OBQ.user.46.165.242.75.POSTED!not-for-mail
From: maixxx <maixxx07b@orange.fr>
Newsgroups: fr.sci.maths
Subject: =?UTF-8?B?UmU6IFByb2Jsw6htZSBkZSBsJ2FycsOqdCAod2FzOiBRdWUgZmFpdCBj?=
=?UTF-8?Q?e_programme_=3f=29?=
Date: Fri, 30 Sep 2022 17:13:07 +0200
Organization: Aioe.org NNTP Server
Message-ID: <th7124$1l9b$1@gioia.aioe.org>
References: <63367bdd$0$25804$426a74cc@news.free.fr>
<th6hru$248k$1@cabale.usenet-fr.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Info: gioia.aioe.org; logging-data="54571"; posting-host="Ty0ksHdy1VaTVTw6oc1OBQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101
Thunderbird/102.3.0
X-Notice: Filtered by postfilter v. 0.9.2
Content-Language: fr-FR
Bytes: 3577
Lines: 77
Le 30/09/2022 à 12:53, Olivier Miakinen a écrit :
> [diapublication, suivi vers fr.sci.maths seul]
>
> Bonjour,
>
> Le 30/09/2022 à 07:17, ast avait écrit :
>>
>> def f(m, n):
>> while n:
>> m, n = m ^ n, (m & n) << 1
>> return m
>
> Comme l'écrivait Michel Talon, cette fonction retourne simplement
> la somme des entiers m et n, du moins cela fonctionne pour tous les
> entiers positifs. À chaque tour de boucle, on retrouve dans m la
> somme bit à bit des nombres m et n *sans tenir compte des retenues*,
> et dans n la somme de toutes les retenues. Au bout d'un petit
> nombre de tours de boucle, il n'y a plus aucune retenue à faire, et
> alors le nombre n vaut 0 tandis que le nombre m contient le résultat
> attendu à savoir la somme des nombres m et n de départ.
>
> Je voudrais maintenant étendre la question d'ast, en faisant suivre
> vers fr.sci.maths seul car ça n'a plus rien de spécifique à python.
>
> Lorsque l'un des nombres est négatif, il arrive que l'algorithme ne
> s'arrête jamais. Par exemple lorsque m vaut -1 et que n vaut n'importe
> quel nombre strictement positif.
>
> Ma question est alors de déterminer pour quelles valeurs de m et n
> le programme s'arrête et pour quelles valeurs il ne s'arrête jamais.
>
> Question subsidiaire : lorsque le programme s'arrête, combien de
> tours de boucle a-t-il réalisés ?
>
pour 15+1 m= 1111 + n=0001
14+2 1110 0010
12+4 1100 0100
8+8 1000 1000
16+0 10000 0000
4 itérations
pour 6+5 0110 0101
3+8 0011 1000
11+0 1011 0000
2 itérations
pour 4+8 1000 0100
12+0 1100 0000
1 itération
Remarquer qu'à chaque itération la somme m+n est constante et égale au résultat
final. AMA le nombre de boucles est *au plus* égal au rang max du chiffre
binaire à 1 du résultat. Vrai ??
>
> Précision pour la représentation des nombres en binaire, un nombre
> positif comporte « à gauche » une infinité de chiffres binaires
> valant zéro, tandis que les nombres négatifs ont une infinité de
> chiffres à 1.
>
> Exemples :
> 3 = ...0000011
> 2 = ...0000010
> 1 = ...0000001
> 0 = ...0000000
> -1 = ...1111111
> -2 = ...1111110
> -3 = ...1111101
> -4 = ...1111100
>
>
Ça fait bien penser aux "additionneurs" réalisés avec des registres et des portes.
> https://www.techno-science.net/definition/6685.html
Ce n'est plus exactement des maths "pures" mais c'est bien utile dans les ordis.