Deutsch   English   Français   Italiano  
<633de3a9$0$25830$426a74cc@news.free.fr>

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

Path: ...!news.mixmin.net!weretis.net!feeder8.news.weretis.net!news.trigofacile.com!usenet-fr.net!agneau.org!nntpfeed.proxad.net!proxad.net!feeder1-1.proxad.net!cleanfeed1-a.proxad.net!nnrp2-2.free.fr!not-for-mail
Date: Wed, 5 Oct 2022 22:06:01 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101
 Thunderbird/102.3.1
Subject: Re: Suite logique
Newsgroups: fr.sci.maths
References: <i9sELUrF0ppldVVnmbqOe0kFJ5M@jntp>
 <thctgi$1hsu$1@cabale.usenet-fr.net> <633d129e$0$31542$426a74cc@news.free.fr>
 <633d1b7b$0$24807$426a74cc@news.free.fr> <44mgXV4oqMvSSeYQ_tRes1XIvqI@jntp>
 <633d65d0$0$3006$426a74cc@news.free.fr>
Content-Language: fr
From: ast <ast@invalid>
In-Reply-To: <633d65d0$0$3006$426a74cc@news.free.fr>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 82
Message-ID: <633de3a9$0$25830$426a74cc@news.free.fr>
Organization: Guest of ProXad - France
NNTP-Posting-Date: 05 Oct 2022 22:06:01 CEST
NNTP-Posting-Host: 91.170.32.5
X-Trace: 1665000361 news-2.free.fr 25830 91.170.32.5:10613
X-Complaints-To: abuse@proxad.net
Bytes: 2698

Le 05/10/2022 à 13:09, ast a écrit :
> Le 05/10/2022 à 10:24, Samuel DEVULDER a écrit :
>> Le 05/10/2022 à 07:51, ast a écrit :
>>
>>> Est ce que quelqu'un pourrait me donner l'expression
>>> de la fonction g qui fait passer d'un état au suivant ?
>>
>>
>> C’est possible mais tordu.
>>
>> 1. Tu comptes la parité des bits à 1.
>>
>> 2. Si pair, tu inverses le bit de poids faible (bit à droite).
>>
>> 3. Si impair, tu inverses le bit juste à gauche du bit 1 le plus à 
>> droite.
>>
>> Sam.
> 
> non, c'est pas tordu, c'est bien ce que je cherchais.
> 
> ça pourrait servir pour faire un compteur gray
> de grande dimension en électronique sans avoir
> à expliciter tous les états avec un CASE
> (VHDL)
> 
> case count is
>    when "00000000" => count <= "00000001"
>    when "00000001" => count <= "00000011"
> etc
> 

def next_gray_code2(n):

     count1 = bin(n).count("1")

     if count1 % 2 == 0:
         return n ^ 1

     index = 1
     for i in range(n.bit_length()):
         if n & index:
             break
         index <<= 1

     return  n ^ (index << 1)


code = 0

for _ in range(25):
     print(f"{code: >2d} {code:05b}")
     code = next_gray_code2(code)


  0 00000
  1 00001
  3 00011
  2 00010
  6 00110
  7 00111
  5 00101
  4 00100
12 01100
13 01101
15 01111
14 01110
10 01010
11 01011
  9 01001
  8 01000
24 11000
25 11001
27 11011
26 11010
30 11110
31 11111
29 11101
28 11100
20 10100