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