Sujet : Re: Suite logique
De : ast (at) *nospam* invalid (ast)
Groupes : fr.sci.mathsDate : 05. Oct 2022, 21:06:01
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <633de3a9$0$25830$426a74cc@news.free.fr>
References : 1 2 3 4 5 6
User-Agent : Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Thunderbird/102.3.1
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