Je suis à la recherche d'une fonction (optimisée) permettant de convertir un
nombre entier (16 bits)
en un tableau de boolean.
Je m'explique :
J'ai un entier (par ex : 13) qui correspond en binaire à 00000000 00001101.
J'aimerai avec une fonction entrer mon entier (13) et en sortir un tableau
de dimension(0-15) de boolean du style :
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Ambassadeur Kosh
> J'ai déjà fait ceci (ça marche), mais je ne pense pas que se soit très optimisé !
effectivment. oriente toi vers les nombres entiers. la division entiere, et le reste (operateur mod, dit modulo) vont te permettre de remplacer efficacement (dec /2) - Int(dec/2) et d'enrichir fortement le potentiel du possible.
for(int i=0;i<16;i++) { int reste = n % 2 ; // calcul du reste de la div par 2
// le if true else false est à jetter de maniere générale bool bit = reste != 0 ; t[i] = bit ;
// décaler à droite de n bits, c'est diviser par 2 puissance n n = n/2 ; // ou n = n >> 1 ; }
si tu presumes que ton tableau est rempli de 0 au départ, tu peux meme la jouer comme ça
for(int i=0 ; n>0 ; i++) { // assure toi juste que n a bien une capacité couverte par ton tableau ... }
> J'ai déjà fait ceci (ça marche), mais je ne pense pas que se soit très
optimisé !
effectivment. oriente toi vers les nombres entiers. la division entiere, et
le reste (operateur mod, dit modulo) vont te permettre de remplacer
efficacement (dec /2) - Int(dec/2) et d'enrichir fortement le potentiel du
possible.
> J'ai déjà fait ceci (ça marche), mais je ne pense pas que se soit très optimisé !
effectivment. oriente toi vers les nombres entiers. la division entiere, et le reste (operateur mod, dit modulo) vont te permettre de remplacer efficacement (dec /2) - Int(dec/2) et d'enrichir fortement le potentiel du possible.
for(int i=0;i<16;i++) { int reste = n % 2 ; // calcul du reste de la div par 2
// le if true else false est à jetter de maniere générale bool bit = reste != 0 ; t[i] = bit ;
// décaler à droite de n bits, c'est diviser par 2 puissance n n = n/2 ; // ou n = n >> 1 ; }
si tu presumes que ton tableau est rempli de 0 au départ, tu peux meme la jouer comme ça
for(int i=0 ; n>0 ; i++) { // assure toi juste que n a bien une capacité couverte par ton tableau ... }
Franck Siedeler
Merci Ambassadeur Kosh,
Mais je n'arrive pas écrire ça en VB.NET : t[0] = (n & 1)!=0 c'est le != qui pose problème. ca veut dire quoi != ???
Franck
"Ambassadeur Kosh" a écrit dans le message news: O#$
> J'ai déjà fait ceci (ça marche), mais je ne pense pas que se soit très > optimisé !
effectivment. oriente toi vers les nombres entiers. la division entiere,
et
le reste (operateur mod, dit modulo) vont te permettre de remplacer efficacement (dec /2) - Int(dec/2) et d'enrichir fortement le potentiel du possible.
for(int i=0;i<16;i++) { int reste = n % 2 ; // calcul du reste de la div par 2
// le if true else false est à jetter de maniere générale bool bit = reste != 0 ; t[i] = bit ;
// décaler à droite de n bits, c'est diviser par 2 puissance n n = n/2 ; // ou n = n >> 1 ; }
si tu presumes que ton tableau est rempli de 0 au départ, tu peux meme la jouer comme ça
for(int i=0 ; n>0 ; i++) { // assure toi juste que n a bien une capacité couverte par ton tableau ... }
Merci Ambassadeur Kosh,
Mais je n'arrive pas écrire ça en VB.NET :
t[0] = (n & 1)!=0
c'est le != qui pose problème.
ca veut dire quoi != ???
Franck
"Ambassadeur Kosh" <kosh.naranek@babylon5.net> a écrit dans le message news:
O#$F2UYIGHA.3700@TK2MSFTNGP15.phx.gbl...
> J'ai déjà fait ceci (ça marche), mais je ne pense pas que se soit très
> optimisé !
effectivment. oriente toi vers les nombres entiers. la division entiere,
et
le reste (operateur mod, dit modulo) vont te permettre de remplacer
efficacement (dec /2) - Int(dec/2) et d'enrichir fortement le potentiel du
possible.
Mais je n'arrive pas écrire ça en VB.NET : t[0] = (n & 1)!=0 c'est le != qui pose problème. ca veut dire quoi != ???
Franck
"Ambassadeur Kosh" a écrit dans le message news: O#$
> J'ai déjà fait ceci (ça marche), mais je ne pense pas que se soit très > optimisé !
effectivment. oriente toi vers les nombres entiers. la division entiere,
et
le reste (operateur mod, dit modulo) vont te permettre de remplacer efficacement (dec /2) - Int(dec/2) et d'enrichir fortement le potentiel du possible.