Forums Développement Multimédia

Aller au contenu

- - - - -

Projet Tuto Opérateur Binaires pratique

TUTO

88 réponses à ce sujet

#1 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 09 May 2011 - 21:20 PM

[Edit Billyben] Messages déplacés depuis le sujet idée de Tuto [/edit]

coucou;
oui finalement un lien c'est pas plus mal ceux qui veulent laisser un commentaire ; une idée; une critique.. voire un compliment qu'ils le fassent ici..

Les truc qu'on peut faire avec les opérateurs sur les bits

#2 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 14 May 2011 - 15:14 PM

Bonjour hubeert,

J'ai lu ton document. Hum... pas facile de te faire un retour je trouve, car c'est encore très "brut".
J'essaie quand même, pour faire avancer le sujet, et pour te donner de la matière.

Alors j'y vais carrément: Je crois que le sujet du tutoriel ne devrait pas être "les opérateurs binaires", mais "l'utilisation du binaire".

Par exemple, dans ton document tu commences par parler de l'opérateur &, tu nous dis que cela peut servir à tester un jeu de flags, et à cette occasion tu développes un exemple de tri de balles selon leur couleur (au fait, as-tu remarqué que l'opération de tri n'utilise pas l'opérateur & ?)

Je me dis que cela serait mieux de parler tout d'abord de ces flags, avant de parler de &
Car qu'est-ce que c'est la difficulté ici? Comprendre comment marche & ou comprendre comment on peut stocker l'information de couleur en utilisant des bits? A mon avis c'est le 2eme point, et je crois que tu vas plus apporter aux lecteurs à ce niveau. Limite le & c'est du détail.
Tu as une pratique de l'utilisation des bits pour stocker de l'information. Tu devrais nous la faire partager, d'entrée de jeu. Tu nous expliquerais d'abord comment on peux stocker de l'information dans des bits. Exemple: les balles de couleurs. Puis tu nous montrerais ce qu'on a à y gagner. Tu en viendrais ainsi à parler des opérateurs, qui ne sont que les outils permettant de manipuler ces données.

Il y a de bonnes choses dans ton document, mais je réfléchirais d'avantage à sa démarche. Avant d'aller plus loin dans mes commentaires j'attends ta réaction là-dessus, et voir si je suis compréhensible :)

#3 stefbuet

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 78 messages

Posté 14 May 2011 - 17:01 PM

Simplement je souhaite préciser que les opérateurs sont utilisables sur n'importes quels types de données. Le type de base de Flash pour les nombres, le Number, est géré en interne par la machine virtuelle sous forme de double (c++) sur 64bit, pour les int/uint je ne sais pas, mais en tout cas les nombres ne se limitent pas a 32bit comme tu le dis.

#4 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 14 May 2011 - 18:08 PM

Et vive l'esprit de synthèse de Lilive \o/

Effectivement ça doit être ça qui m'a donné l'impression générale de grande confusion, je ne voyais pas où tu voulais en venir, ni à qui tu t'adressais. Il me semblait que c'était trop ou trop peu expliqué selon.

Peut-être aussi la façon dont j'ai récupéré le texte dans openOffice n'a-t-elle pas aidé ;)

Sans doute une construction avec chapitre/titre sous chapitre/re-titre, aiderait-elle à suivre le cheminement (et la structuration) de ta pensée ou de l'exposé.

Je n'ai fait que survoler l'histoire du stockage des couleurs, et ça me semble une bonne illustration de comment stocker des infos au niveau du bit.

quand à la conclusion

Citation

Maintenant nous avons les outils nous pouvons commencer a nous amuser et a comprendre l’utilisation et l’intérêt des ces operateurs sur les bits.

euhh… tu nous laisses méchamment sur notre faim quand même :mrgreen:
pcq le coup des 2718 balles à comparer, extraire, tout ce qu'on veut, c'est très sympa pour l'illustration, en toute théorie, mais en vrai ? Dans la vraie vie de geek collé à l'autre vie justement, on va l'utiliser quand par exemple ? Dans des jeux, dis-tu en intro. Chic c'est un thème d'intérêt sur le forum - qui y consacre une salle spécifique - un exemple peut-être, même non réalisé, qui nous donnerait des idées pour nous y essayer :roll:

Voilà vite fait ce que je peux te dire depuis une brève lecture. L'idée est bonne, tu as déjà bien avancé - et merci de l'énergie consacrée - ça devrait donner quelque chose d'intéressant et utile :)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#5 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 14 May 2011 - 23:10 PM

coucou;
Merci pour vos retours même si c'est pas simple pour un sujet aussi ésotérique :roll: :roll:
pour répondre au fil de manière chronologique..
j'ai commencer par expliquer les opérateur.; pour quelqu’un qui ne saurait même pas que ca existe !!( on me la caché :shock: )bien sur ca ne sert a pas grand chose de faire ca il y a les mêmes explications dans l'aide !! la difficulté c'est de savoir comment marche & et a quoi il sert en effet !! et comprendre comment on peut stoker de l’information dans un bit n'est pas une difficulté;mais savoir a quoi ca peut etre utile c'est plus intéressant c'est évident .. ceci dit faut quand meme savoir s'en servir et dans mon tuto nous en sommes pas la.. comme lilive la remarque on s'en est pas servi.. mais bon . donc pour moi je dis bien pour moi meme si cest maladroit je préfère décrire les opérateurs avant de faire voir ce quon peut en faire( meme si le fait de stoker des infos dans 15 chiffres différents me semblait très parlant)
Oui oui tu es très compréhensible.. plutôt que d'expliquer la roue tu préfère savoir comment faire avancer la charrette..

pour stef il est possible que depuis les processeur sur 64 bit on puisse stoker sur 64 bit.. d'une tous les ordinateur ne sont pas equipés ainsi ; d'autre part ca ne change rien a la méthode qui est de tester des bits..(si c'est de ca dont tu parles)

pour l'instant il ny a pas de grande confusion de mon cote c'est un sujet peu abordé alors pas simple de mettre en valeur des idées toutes simples.. je ne suis donc pas très étonné qu'on ne sache ou cela puisse mener ..En fait je m'adresse a tous le monde vraiment car c'est si simple et ca peut servir si souvent qu'on se demande pourquoi ca été si peu exploité;Après je suis conscient de ma piètre pédagogie , de mes faibles connaissances et aussi qu'un tel tuto demande pas mal d'organisation .. mais vous êtes la pour m'aider ..Et moi pour partager des petits trucs :lol: p
Pour Nataly.. dans un but pédagogue.. cest la suite du tuto..

Continuons avec de petits exercices..
Nous avons trié nos balles arrivées dans un conteneur elle sont toutes classées par catégorie dans leur sac respectifs. Nous allons les vendre . Nos études sur les habitudes d’achat montre ceci les balles rouges sont les plus vendues ; puis les rouge jaune et bleu ; suivi de celles contenant du rouge ; puis de celles contenant du bleu et les autres . Nous allons faire 5 tarifs différents
• les rouges
• rouge jaune bleu
• contenant du rouge
• contenant du bleu
• les autres.
Afin de construire une grille de prix cohérente le prix de base est fixé a 1 euro cela correspondra aux prix des balles ordinaires n’ayant pas de rouge ni de bleu; si elles contiennent du bleu on rajoute 0,05 c si elle contiennent du rouge on ajoute 0,10 c ; si elles sont tricolores rouge jaune bleu on rajoute 0,20 et enfin pour les toutes rouges 0,30c en plus ; comment calculer tout ca.. ?
En fait tout simplement il suffit d’analyser nos 15 variables . Nous avons maintenant les outils pour faire ca.. Il nous reste plus qu’a faire les conditions.. ☺ avec les operateur sur le bit et nos variables..
j'ai conscience que cest pas d'un portée facile.. non plus

#6 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 15 May 2011 - 00:36 AM

Citation

Le type de données Number utilise jusqu'à 53 bits pour représenter les valeurs d'entier
....

#7 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 15 May 2011 - 00:42 AM

Avant d'attaquer le tuto je te conseillerais de lire bcp au sujet du bit et du byte, ( puis aussi sur le sujet de IA32 ) ... les mantisse aussi ... le bit de poids fort et faible ...


Comme tu le dis t'es connaissances sont limité, je peux comprendre si tu n'est pas dev ... mais attarde toi sur le sujet avant d'écrire :)

Modifié par goabonga, 15 May 2011 - 00:42 AM.


#8 stefbuet

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 78 messages

Posté 15 May 2011 - 01:38 AM

53bits?
Je ne savais pas que Flash utilisait une techno type GMP... Quand je travaillais avec Alchemy la doc d'Adobe conseillait d'utiliser des double plutôt que des float pour éviter le cast et aller plus vite car le player utiliserait du double pour les Number de l'AS. J'imagine que la machine virtuelle ne passe à une méthode type GMP pour gérer les Number que si leur taille en vaut la peine et dans le cas contraire utilise des double, sinon les performances seraient très médiocre. Un point à creuser :)

Modifié par stefbuet@hotmail.com, 15 May 2011 - 01:38 AM.


#9 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 15 May 2011 - 02:14 AM

un float a une taille de 4octets (comme un int) et un double 8octets c'est pour cela qu'on prefere un float a un double non ?


Citation

J'imagine que la machine virtuelle ne passe à une méthode type GMP pour gérer les Number que si leur taille en vaut la peine et dans le cas contraire utilise des double, sinon les performances seraient très médiocre

Number serais d'une grande precision ce qui n'est pas le cas.

Puis Flash Number utilise jusqu'à 53bits pour les entiers mais Number utilise conformément a la norme IEEE-754 un format a deux décimales sur 64bit ...


pour le tuto :)
http://fr.wikipedia....9cision_64_bits

Modifié par goabonga, 15 May 2011 - 02:17 AM.


#10 stefbuet

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 78 messages

Posté 15 May 2011 - 02:34 AM

J'ai rien dis pour GMP... Pendant un instant j'avais lu 52 bytes, très étonné ^^.
Pour terminer cette conversation et revenir à mon premier propos, peu importe la norme utilisée quand on utilise les opérateurs car on écrase les infos de mantisse/signe/exposant en quelque sorte en travaillant avec des nombres flottant mais surtout et c’était simplement pour sa que je faisais la remarque, il n'y a pas de limitation à 32 bit de mémoire comme indiqué dans le doc. Word.

#11 hu9o

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 15 May 2011 - 09:16 AM

Citation

Oui oui tu es très compréhensible.. plutôt que d'expliquer la roue tu préfère savoir comment faire avancer la charrette..
D'après ce que j'ai compris, Lilive propose d'exposer le problème (faire avancer la charrette), puis présenter la roue, expliquer son fonctionnement, et enfin montrer en quoi elle résout bien notre problème de départ.

#12 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 15 May 2011 - 09:55 AM

coucou;
J'ai bien précisé que ce n’était pas un tuto mathematique :oops: sur la représentation des nombres binaire..
Pour rendre justice a stefbuetet uniquement dans le cadre de ce tuto on peut effectivement en AS3 avec un nombre de type Number afficher sur 63 bit.. Mais cela nous sert a rien car avec les opérateurs sur les bit dans ce tuto on ne peut travailler que sur des nombres entiers non signés 32 bit soit des uint..
Merci goabonga mais mon but n'est pas d'expliquer la différence entre un bit un byte un octet ou encore parler du langage C ou un byte peut contenir plus de 8 bit ..Ni d'expliquer ( ce que je ne saurais pas faire :lol: ) la représentation des nombres négatif en binaire !!
Donc le but du tuto est de faire voir comment on peut stoker des tas de choses dans un nombre sur 32 bit j'ai la possibilité d'avoir 4 294 967 295 variables différentes soit 32 commutateurs a 0 ou 1 pour faire ce bon me semble..
Pour lilive jai un peu expliqué comment stoker la valeurs de la couleur dans un bit spécifique et les combinaisons possibles mais au moment ou je lai fait nous n'avions pas les outils nécessaire pour ce faire. par contre je vais ajouter un petit peu de code pour expliquer un peu l'utilisation de & a ce stade la.
Merci de vos retours ,de vos commentaire,de vos critiques et de vos encouragements..
la suite du tuto qui n'est pas ecrite sera plus porte par et sur exemple ce qui devrait etre plus intéressant a condition de bien rester dans l'idée du tuto ou les nombres binaire ne sont que des variables permettant de stoker des infos..
Mais de toute facon d'ore et déjà merci de votre lecture..

#13 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 15 May 2011 - 09:57 AM

Voir le messagehubeert, le 14 May 2011 - 23:10 PM, dit :


Oui oui tu es très compréhensible.. plutôt que d'expliquer la roue tu préfère savoir comment faire avancer la charrette..

ben… non pas forcément. D'ailleurs expliquer la roue, ou plutôt ce que c'est, comment ça se fabrique, quand et comment ça s'utilise (par exemple pour construire une charrette) c'est le gros de mon occupation. J'ai rédigé ici nombre de documents traitant de chose "fondamentales", donc de roues ;)

Je trouve donc que c'est une bonne idée d'expliquer ces choses qui font peur à un public non averti.

Oui, oui oui, expliquer le ET, le OU, et autres XOR :)
Oui, oui oui, raconter quelle tête ça a la valeur 15 en base deux.
Oui, oui oui, montrer qu'on peut par conséquent détourner le principe pour stocker des infos autres que la valeur en question et les lire.

Oui, dix fois oui :)

Mais…

;)

… en rendant l'exposé compréhensible par le public visé.

Donc : définir le public, ce qu'il est réputé savoir ou non.
Pour ce qu'il est réputé ne pas savoir et acquérir, prendre le temps de l'expliquer, en sélectionnant le vocabulaire adéquat et juste, en structurant le propos et le texte.
Pour ce qu'il est réputé ne pas savoir et qu'on a choisi de ne pas développer, et bien ne pas y faire référence :

Citation

Les operateurs..
Le & appelé ET binaire ;
Il prend la forme suivante .
opérande1 & operande2
Les opérandes sont des nombres convertis en entier binaire sur 32 bit.

Tu t'adresses donc à quelqu'un qui ne saurait pas ce qu'est l'opérateur, mais pour qui "un entier binaire sur 32 bits" c'est limpide… Tu vois ? ;)


Sans compter que je suis pas certaine du tout de la formulation (pourquoi convertis ?)…
Et d'ailleurs depuis quand un opérateur prend-il une forme ?

je te prends un autre exemple :

Je te raconte en contexte : avec les sensations associées :
Je viens de lire l'intro, je ne sais toujours pas bien ce qu'on va voir ni dans quel but, (pas grave ça s'éclaircira dans la marche, pense-je) et ça attaque :

Citation

Pour la lisibilité de ce tutorial. Nous nous servirons de deux fonctions Variable.toString(base) (ici base 2) pour transformer un nombre en base 2) et parseInt(variable,base) qui d’une chaine extrait un entier.
Exercice pratiques.

Aïe os court ! Quoi, exercice pratique ? Il m'a expliqué quelque chose le monsieur ?

Je te promets que c'est ce qui s'est passé dans ma tête. j'ai juste rien compris. La phrase étant longue, non ponctuée, et à multiple destinations (tu dis beaucoup de choses d'un coup), je l'ai lue en apnée avec la sensation d'une intro de chapitre. Normalement en sortant de là j'aurais du remettre les pieds sur la terre ferme. J'attendais la suite, l'explication, le chapitre… et… rien. Ayé c'est fini !

Si tu fais une explication de texte de la phrase considérée, tu vas t'apercevoir que ça pêche de partout :

Citation

Pour la lisibilité de ce tutorial. Nous nous servirons de deux fonctions […]
Je considère le point comme une coquille et déjà je suis un peu perdue : pour la lisibilité nous nous servirons. heuuhhh… La lisibilité c'est toi que ça concerne. Dans un autre contexte tu aurais pu écrire, par exemple, en justifiant de lisibilité : je passerai en gras les méthodes et en italique les propriétés…
Mais ici, quel rapport avec la lisibilité ? Ce ne sont pas des conventions d'écriture, ça n'aide en rien à lire…

Bon, comme je suis en situation de lecture, je passe par dessus le motif (donc la confusion s'accroit) et continue sur l'élan. Tu parles de deux fonctions, un peu instinctivement j'attends que tu les cites… et ben non. Ce qui suit c'est une sorte de ligne de code, qui présuppose une variable dont on ne sait rien (quel type ? dans ce contexte c'est pas superflu du tout) tu lui appliques (manifestement) une méthode… Et tout de suite derrière une parenthèse dont on ne sait pas si c'est la suite de la ligne en question ou de l'explication apparemment débutée. :roll: On y parle de "nombre" ah… ce doit être Variable qui est un nombre (euuhh tu veux dire Number ou tu parles de "nombre" dans l'acception courante hors des champs mathématiques ou informatiques ?).
Voilà tout ce qui se bouscule dans la tête quand on découvre la phrase, et ce n'est pas fini, vu que justement on rencontre un et… Il faut donc continuer la lecture et ajouter des infos à quelque chose déjà bien confus.

On est d'accord : je te décortique… n'empêche que peu ou prou, c'est ce qui se passe. surtout à la deuxième lecture.
Le lecteur est tout seul face à ton texte, s'il ne comprend pas il n'a d'autre recours que relire en s'accrochant aux mots, ponctuations, mise en page…

Ce que tu voulais dire c'est que tu aurais recours à deux méthodes pour convertir d'un "sens" sur l'autre, de base dix en base deux et inversement.

J'aurais essayé quelque chose comme ça (qui ne me convient pas tout à fait, sur un texte perso j'aurais cherché la formulation vraiment correcte, mot à mot, verbe à verbe) :

Pour passer d'une base sur l'autre (base 10 / base 2) nous nous servirons des deux méthodes toString et parseInt.

• toString est une méthode de la classe int qui permet de traduire un entier en la base de son choix (dans ce tuto la base 2).

par exemple traduire 15 en base 2 (et l'afficher ds la fenêtre de sortie) s'écrirait comme suit :

var laValeur:int=15
trace(laValeur.toString(2))

et blabla du même tonneau pour parseInt



Voilà, excuse le long (trop :oops: ) développement et comprends bien que l'idée n'est pas de te chercher des poux mais de pointer l'ensemble des minuscules choses qui prises indépendamment les unes des autres ne sont pas bien graves mais qui, accumulées, rendent l'exposé très abscons.

Tu n'es pas le premier à découvrir qu'il n'est pas simple de s'exprimer simplement.
C'est un peu comme regarder un maçon construire un mur de briques. Wo qu'on se dit : c'est tout niais, suffit de mettre les briques les unes sur les autres en tartouillant du ciment entre elles…
Et ben non ;)

Ce sont les carnets de Matisses (je crois… d'un coup j'ai un doute) qui présentent des dizaines et des dizaines de traits, jetés à main levée. Et ce sont ces mêmes gestes qu'on retrouve ensuite réunis sur une toile dont on admire l'efficace "spontanéité" ;)

Ayé, je dérape…

Faites la taire ! :D

OK… :jesors:
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#14 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 15 May 2011 - 10:12 AM

… et je reviens (mais pas longtemps, juré) pour dire que je sais pas comment je me serais sortie d'une consigne de type des balles, mais sûr que j'aurais pas pensé aux bits et queje me serais fait suer grave.

Je sais bien n'être pas l'unité de référence mondiale et intergalactique, mais suis sûre aussi que je ne suis pas la seule à qui ça aurait échappé et que ce tuto sera d'une belle utilité à plus d'un(e)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#15 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 15 May 2011 - 11:02 AM

coucou;
Non je sais bien que tu ne me cherches pas des poux :lol:
les deux fonctions sont mises en avant pour visualiser les nombres dans les deux base.. mais une calculette en mode programmation fait l'affaire aussi..C'est juste pour faire voir que 15 en binaire cest 4 bit qui sont a true soit 15est represente pâr 1111 en binaire.. J'ai conscience que c'est pas simple a expliquer tout simplement parce que c'est pas simple a comprendre.
Le public est reputé pour ne rien savoir d’où le pas a pas qui semble confus sans doute sur la forme mais pas vraiment sur le fond; il faut vraiment connaitre ces opérateurs !!
beh un entier binaire sur 32 c'est un entier écrit avec des 1 et des zero en binaire donc..
par exemple 8 en binaire s'ecrit 1000 ; et l'ordinateur quoique tu fasses converti les nombres en entier binaire sur 32 bit ca veut dire que l'opérateur & ne tiendra pas compte d'une éventuelle partie fractionnaire..
non tu dérapes pas:smile: je suis dans mon truc et jene suis pas pédagogue j'hesite souvent entre la methode neu neu style prenez votre calculette taper 2 et appuyez sur le convertisseur binaire et le truc megaOuf ou personne ne comprend rien; il y a des gens qui vont lire ce tuto qui ne savent meme pas ce qu'est un operateurs binaire mais d'autre qui pour d'autres raisons les manipules journalierement.. Je ne veux pas etre neu neu ni faire celui qui sait et qui prend un ton condescendant..
En tout cas merci de tes remarques je vais essayer d'améliorer la structure de l'exposé.. et cest grâce a ceux qui ne voient pas ou je veux en venir que je (nous) parviendrais a faire un truc plus clair je pense.

#16 hu9o

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 15 May 2011 - 14:49 PM

Ce serait pas plus logique d'expliquer d'abord comment combiner les valeurs (OU), et après comment les lire séparément (ET) ? (enfin ça change pas grand chose)
Aussi ce serait sûrement utile de présenter la notation 0bX, qui rend plus lisible dans certains cas, et qui éviterait d'écrire parseInt("X", 2). (remplacez X par un nombre entier postif de votre choix, sauf dans cette phrase :P)

Citation

Passons a l’opérateur OU binaire ou OR | une barre verticale (sur mac alt shit touche L )
Je crois que c'est "shift", pas "shit" :mrgreen:
(désolé)

#17 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 17 May 2011 - 11:34 AM

Voir le messageNataly, le 15 May 2011 - 09:57 AM, dit :

Donc : définir le public, ce qu'il est réputé savoir ou non.
Pour ce qu'il est réputé ne pas savoir et acquérir, prendre le temps de l'expliquer, en sélectionnant le vocabulaire adéquat et juste, en structurant le propos et le texte.
Pour ce qu'il est réputé ne pas savoir et qu'on a choisi de ne pas développer, et bien ne pas y faire référence

Salut,

Je trouve cette remarque de Nataly très juste.
L'auteur d'un tutoriel doit déjà bien réfléchir à qui son tutoriel s'adresse. Qu'est-ce que le lecteur est supposé savoir?
Pour l'instant, j'ai l'impression que tu t'adresses à des lecteurs qui seraient déjà familier avec le binaire. Pour te suivre ils doivent (il me semble) connaitre un minimum le binaire, ce que sont des bits, et savoir qu'on peut représenter un même nombre dans des bases différentes. A partir de là tu leur expliques l'usage des opérateurs.
Crois-tu qu'il y ait beaucoup de monde qui ait des connaissances en binaire, mais qui ne sache pas se servir des opérateurs? Moi je ne pense pas.

Ce qui est sûr, au vu de tes exemples, c'est que tu as une pratique de programmation intéressante à partager.

Nataly a dû passer un bon petit moment à te relire pour te faire des remarques. Je suis bien d'accord avec elle, il y a pas mal de choses à améliorer. Franchement, je crois que tu ne devrais pas essayer de faire un tutoriel "théorique". Au vu de ton premier jet il te reste beaucoup de boulot. A mon avis, tu aura beaucoup plus de facilité et de satisfactions en proposant plutôt une page "pratique", dont le titre et le sujet pourraient être: "Exemples pratiques d'utilisation du binaire".
- Partager ton expérience d'utilisation du binaire, en proposant dès le début des exemples concrets. Ne nous dit pas que tu vas nous expliquer "en général" comment ça marche. Dis-nous: voici un problème (le tri des balles par exemple) et voici une solution élégante et simple pour le programmer (le binaire)
- Introduire les outils dont tu as besoin au fur et à mesure.
- A la fin le lecteur aura appris beaucoup, surement autant que si tu faisais un tuto théorique.

Je suis quasi sûr que tu vas galérer si tu ne prends pas la chose par ce bout, qui me semble bien mieux te correspondre. Je le vois venir, si tu fais trop théorique Nataly et moi allons te contester beaucoup sur la pédagogie, et je ne parle pas des "techniciens de pointe" qui se sont exprimés plus haut ;)

Tu as une expérience concrète. Fais-nous en profiter. Ce sera beaucoup mieux, et je suis sûr que tu sera plus compréhensible.


P.S: j'ai vu que tu essayais le wiki. Tu peux continuer à élaborer ton document en postant des .doc si tu veux, mais si tu veux le faire dans le wiki fais-le ici dans cette catégorie: http://ressources.me...utoriaux/essais
Par exemple ici: http://ressources.me.../essais/binaire

#18 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 17 May 2011 - 13:25 PM

coucou;
oui merci de tes remarques..
Mais il me semble difficile de parler d'opérateurs binaires sans les décrire; ni savoir ce qu'il font c'est en rien théorique c'est juste pédagogique.
Le tutoriel est censé s'adresser a tout le monde je l'écrit au début il a rien a savoir de particulier et ce qu'il y a a savoir j'essaye de l'exposer.

C'est pas un concept facile a comprendre.

Mais pas tant que ca !! l'idée 'cest que dans un variable numérique on peut stocker des infos.. comme un tableau en quelque sorte..
Nataly dans son tuto sur les tableaux explique les divers outils qui servent a manipuler les tableaux.. Il faut le voir comme ca.. :roll:
Par contre ce que tu as pu lire n'est qu'un partie du tutoriel. lorsqu'il sera fini on pourra passer si on le veut directement aux applications pratiques.
En clair dans la première partei j'explique les outils; dans l'exemple de Nataly et bien je suis en train d’expliquer que pour faire un mur il faut une truelle un fil a plomb etc.. Je ne peux pas dire prenez la truelle et faites moi un mur.. :lol:

Je suis conscient de mes problèmes de pédagogie mais je pense que les remarques d'utilisateurs qui ont pris la peine de répondre me permettra que ce soit lisible par tous..
Merci pour le lien; est ce que ca devient un page définitive? car j'en suis aux balbutiement de la mise en page..
Et merci pour tout.. on va y arriver :lol:

#19 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 17 May 2011 - 14:41 PM

Je te réponds hubeert, excuse-moi si je fais des redites, c'est que la discussion commence à être longue :)

Voir le messagehubeert, le 17 May 2011 - 13:25 PM, dit :

Le tutoriel est censé s'adresser a tout le monde je l'écrit au début il a rien a savoir de particulier et ce qu'il y a a savoir j'essaye de l'exposer.
Bon d'accord. Dans ce cas il faut rajouter des choses avant de se mettre à parler du &, sinon le lecteur est bloqué dès le tout début par:

Les opérateurs sur les bits semblent plus compliqués a comprendre
-----> d'accord, mais on ne sait pas ce que sont les bits, donc on ne peut te comprendre
Variable.toString(base) (ici base 2)
-----> d'accord, mais on ne sait pas ce qu'est une base, donc on ne peut te comprendre

A ce stade, tu as donc beaucoup de chances de perdre le lecteur que tu visais.

Il faut donc commencer par parler de la possibilité de représenter un nombre en base 2, montrer la tête que ça à la notation binaire, donner des exemples comme trace(9) et trace(0x1001) (donc au passage présenter 0b, comme disait hugo)
Et seulement à ce moment tu peux nous expliquer le truc d'utiliser un bit pour 1 information. Et ici tu as l'exemple des balles tout prêt à servir.
Pas la peine je pense de détailler le codage d'un nombre en binaire, avec le coup des puissances de 2, sinon tu es bon pour une page entière. Mais un petit lien vers une page qui l'explique sera le bienvenu.

Ensuite tu pourrais parler en premier de |, là aussi je trouve qu'hugo a une bonne idée, puisque ça permet de positionner les bits un par un. Pour faire propre ce serait du genre:

var n1:int = 0b1000;
var n2:int = 0b0001;
var n3:int = n1 | n2;
trace(n1.toString(2));    // Affiche 1000
trace(n2.toString(2));    // Affiche 1
trace(n3.toString(2));    // Affiche 1001
 

const ROUGE:int = 0b0001;
const VERT:int = 0b0010;
const BLEU:int = 0b0100;
const JAUNE:int = 0b1000;
couleur = ROUGE | BLEU;
trace(couleur.toString(2));    // Affiche 101
 

Ensuite le & qui permet de tester:

var testRouge:int = couleur & BLEU;
trace(testRouge.toString(2));    // Affiche 100
 

if (couleur & BLEU) trace("La balle contient du rouge");
 

Puis l'application sur le tri des balles. A ce moment on voit tout l'intérêt d'utiliser le binaire dans un cas comme cela.

Ce n'est qu'une suggestion de plan bien sûr, à toi de voir ce qui correspond là-dedans à ce que tu veux faire. Mais elle a le mérite d'introduire toutes les notions nécessaires, progressivement.

Voir le messagehubeert, le 17 May 2011 - 13:25 PM, dit :

Mais il me semble difficile de parler d'opérateurs binaires sans les décrire; ni savoir ce qu'il font c'est en rien théorique c'est juste pédagogique.
Tout à fait. Donc dans mon plan ce serait expliquer l'opérateur juste au moment où on va s'en servir. Quand je te conseille de faire un tuto "pratique" plutôt que "théorique" je veux dire que tu pourrais dire: voilà on a des balles de couleurs, voilà comment on utilise des bits pour stocker l'information, et voilà comment on traite cette information avec les opérateurs. Ne pas essayer de faire "général", mais "appliqué" à un cas concret. Résultat: à la fin le lecteur aura acquis la théorie mais sans se perdre, car il suivra le même exemple concret d'un bout à l'autre.
Ce n'est pas d'ailleurs si loin de ce que tu fais dans ton document, je précise juste un parti pris pour qu'il soit clair.

Quand tu auras traité & et | (ce qui sera déjà très bien) et que tu voudras parler des décalages tu pourras introduire ton second exemple (je ne l'ai pas tout à fait compris d'ailleurs, je crois que j'aurais besoin de voir comment tu exploites l'information concrètement dans ton jeu)

Voir le messagehubeert, le 17 May 2011 - 13:25 PM, dit :

Je suis conscient de mes problèmes de pédagogie mais je pense que les remarques d'utilisateurs qui ont pris la peine de répondre me permettra que ce soit lisible par tous..
Là ce ne sont pas des utilisateurs qui t'ont fait des retours, mais des relecteurs intéressés qui ont envie que les pages du wiki soient au point. En général les lecteurs font assez peu de retours. Tu ne peux pas trop compter sur eux pour améliorer ton tutoriel, la plupart du temps si on ne comprend pas un tutoriel et bien, on en cherche un autre!

Quand aux relecteurs que tu as eu, tu ne peux pas non plus leur demander trop, car ça prend du temps tout ça, de te relire et d'essayer de formuler les choses. C'est pour ça qu'il faut que tu essaies à ta prochaine ré-écriture de bien prendre en compte les retours qui t'ont été fait, car je ne pense pas que tu disposes devant toi d'un capital de retours potentiel illimité, ni qu'on puisse envisager encore beaucoup d'aller retours écriture/relectures/retours. Crois-moi, c'est l'expérience qui parle ;)


Voir le messagehubeert, le 17 May 2011 - 13:25 PM, dit :

Merci pour le lien; est ce que ca devient un page définitive? car j'en suis aux balbutiement de la mise en page..
Et merci pour tout.. on va y arriver :lol:
Si on y arrive on en fera une page définitive qu'on placera au bon endroit. Mais je te conseillerais de travailler dans un traitement de texte pour l'instant, cela va te faciliter les changements et les remaniements. Pour nous montrer tu peux aussi bien nous envoyer le document comme la dernière fois.

Bon courage!

#20 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 17 May 2011 - 15:09 PM

lilive :
0x = hexa
0b = binaire ...

1 (0b001)
2 (0b010)
4 (0b100)

#21 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 17 May 2011 - 15:13 PM

Voir le messagegoabonga, le 17 May 2011 - 15:09 PM, dit :

lilive :
0x = hexa
0b = binaire ...

1 (0b001)
2 (0b010)
4 (0b100)
oups oui pardon :oops:
c'est corrigé!

#22 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 18 May 2011 - 08:13 AM

coucou;

Je sais que c'est délicat.. j'ai rajouté un exemple pratique pour illustrer l'opérateur & mais est ce que cela est plus parlant?
ceci
Afin d’illustrer ce que a quoi peut servir l’opérateur & nous avons maintenant nos petitSac remplis de balles identiques mais sur les petitSac l y a marqué 15 ou 8 ou 7 et cest pas très explicite pour la vendeuse qui cherche une balle toute rouge ou une balles jaune et verte.. On va faire un petit programme pour imprimer des affichettes rendant compte du contenu des « petitSac »
Mais.. pour pouvoir utiliser l’opérateur & reportez vous auparavant page 10 afin d’avoir des explications sur la sélection dynamique des bit..
Nous savons que le
jaune est représenté par le bit 0
bleu est représenté par bit 1
vert par bit 2
rouge par bit 3
on va analyser nos variables avec l’opérateur & qui sert principalement a voir si un bit est a true ou false..
on va lui dire s’il y a du vert dans la balle ajoute vert sur l étiquette et pareil pour les autres couleurs. Nous avons donc 15 variables a analyser qui ont elles mêmes 4 bit de significatif.

etiquettes:Array= new Array();
        for( var i:int=1; i<16;++i) {// nos 15 variables ont commence a 1 car nous navons pas de balles sans couleur
                etiquettes[i]="";// on rends nos etiquettes vierges
                for(var j: int=0 ;j<4;++j) { //on teste les 4 bit
                        if( (i & Math.pow(2,j))  ){
                        // la on ecrit si la variables ici i  a le bit 0 a true cest a dire egale a 1(je sais cest pas simple)
                        //ou le bit 1 egale a 2 ou le bit 2 egale a 4 ou le bit 3 egale a 8  verifie les conditions suivantes
                       
                        // si j egale 0 a ce moment la cest que  cest le bit zero qui est a true donc il y a du jaune on met jaune
                        //sur letiquette.
                        // si j egale 1 a ce moment la cest que  cest le bit un qui est a true donc il y a du bleu on met bleu
                        //sur letiquette. ainsi desuite jusqu'a la derniere variable
                                if(j==0) { etiquettes[i] ="jaune  ";}
                                if(j==1) { etiquettes[i] +="bleu  ";}
                                if(j==2) { etiquettes[i] +="vert  ";}
                                if(j==3) { etiquettes[i] +="rouge  ";}
                               
                        }
                }
               
        trace(i +"   "+etiquettes[i])}

voici le résultât du trace..
1 jaune
2 bleu
3 jaune bleu
4 vert
5 jaune vert
6 bleu vert
7 jaune bleu vert
8 rouge
9 jaune rouge
10 bleu rouge
11 jaune bleu rouge
12 vert rouge
13 jaune vert rouge
14 bleu vert rouge
15 jaune bleu vert rouge
et nous avons plus qu’a mettre les étiquettes imprimées sur les petitSac correpondants

Est ce la route a suivre ? je trouve personnellement que cest incomprehensible car on ne sait pas d'ou sort le Math.pow(2,variable) décidement cest pas simple..
bonne journée a tous..

#23 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 18 May 2011 - 08:44 AM

Voir le messagehubeert, le 18 May 2011 - 08:13 AM, dit :

décidement cest pas simple..

:D

Si ça l'était, simple, le net regorgerait de tutos et autres contenus didactiques de qualité. Ce qui est (très très très) loin d'être le cas ;)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#24 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 18 May 2011 - 10:07 AM

J'ai pas encore regardé le tuto mais en vous lisant :
if (couleur & BLEU) trace("La balle contient du rouge");
Hormis le fait que je comprends pas le rapport entre le trace et le code (la constante s'appelle BLEU et on teste le rouge ?), il vaut mieux éviter les conversions implicites dans un tuto, pour la bonne compréhension. "couleur & BLEU" n'est pas un booléen, donc il faut le comparer à une valeur numérique, par exemple "if (couleur & BLEU > 0)".
Voilà, c'était juste pour cette mini-remarque. :)

#25 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 18 May 2011 - 12:00 PM

coucou;
Notre ami lilive a fait une erreur que je lui ai signalé par mp..
dans ce cas le résultat du trace cest "la balle contient du bleu"
dada si cest un boléen..C'est d'ailleurs cela qui est très intéressant..
var bleu:uint=2;
var couleur:uint=5
if(couleur & bleu) trace("ok")
il y aura pas de trace..


var bleu:uint=4;
var couleur:uint=5
if(couleur & bleu) trace("ok")
trace egale "ok"

Modifié par hubeert, 18 May 2011 - 12:02 PM.


#26 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 18 May 2011 - 12:47 PM

Dada a (tjr) raison :), le & ne retourne pas une boolean mais un int !

fais le test :
trace((1&1) is int, (1&1) is Boolean)


#27 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 18 May 2011 - 12:48 PM

Voir le messagehubeert, le 18 May 2011 - 12:00 PM, dit :

dada si cest un boléen..C'est d'ailleurs cela qui est très intéressant..
Et non. :)
var bleu:uint=4;
var couleur:uint=5
trace(getQualifiedClassName(couleur & bleu)); // int
C'est le Flash Player qui fait la conversion implicite en Boolean, voyant que c'est le type attendu. Mais pour un tuto, autant être clair. ;)

#28 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 18 May 2011 - 18:05 PM

var n1:int = 0b1000;

D'où vous sortez cette syntaxe pour écrire du binaire ? Chez moi ça compile pas. :) (j'ai cru que j'étais passé à côté de cette notation depuis longtemps ^^)

#29 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 18 May 2011 - 18:33 PM

Non sa ne passe pas en AS, c'est une convention qui date de 1984 , qui vient de la transition entre le monde de l'électronique et des assembleur ..
C'est encore utilisé dans les ecoles, dans les cours .... et dans les documentation technique au travail :)

#30 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 18 May 2011 - 21:51 PM

coucou;
bien sur que c'est un nombre; puisque 4 et 5 sont des nombres.
Cependant nous sommes dans une partie logique et pas mathématique; ce sont des opérateurs logiques..
boléen est tiré de l’algèbre de boole qui a défini les opérateur logiques.. ( :oops: )
un opérateur mathématique + sera toujours vrai

a +b est toujours vrai..
mais a & b n'est pas toujours vrai..
avec le binaire on travaille sur des zero et des un .. vrai ou faux

C'est important (a & b) donne un résultat vrai ou faux même si en réalité pour la vision humaine a & b peu donner 4 en decimal .(le résultat qui nous intéresse c'est que le bit 2 soit défini et soit égal a 1(ou pas :lol: ) )
le but cest que l'operation dise oui ou non..
if( a+b) trace ("ok") sera tjs vrai
if(a & b) trace ("ok) n'est pas toujours vrai
Ce qui dans le monde binaire correspond a un booléen.
Libre a flash de considérer (avec raison) que le chiffre 4 est un Number.
Quand a l' opérateur sur les bit & ; ils nous permet de savoir si un bit est true ou false et cest bien l'essentiel.

#31 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 18 May 2011 - 22:25 PM

Voir le messagehubeert, le 18 May 2011 - 21:51 PM, dit :

un opérateur mathématique + sera toujours vrai
J'aurais dit non…


Voir le messagehubeert, le 18 May 2011 - 21:51 PM, dit :

a +b est toujours vrai..
J'aurais dit non…


Voir le messagehubeert, le 18 May 2011 - 21:51 PM, dit :

if( a+b) trace ("ok") sera tjs vrai
J'aurais dit non…


Voir le messagehubeert, le 18 May 2011 - 21:51 PM, dit :

Quand a l' opérateur sur les bit & ; ils nous permet de savoir si un bit est true ou false et cest bien l'essentiel.
Pour moi, tu amalgames 'true' et 'false' qui sont 2 notions logiques et '1' et '0' qui sont des données. Tu as peut être raison, historiquement, programmatiquement… ou je ne sais quoi. Mais pédagogiqument, il doit me manquer une étape ou et tout deviens confus. Et comme je suis pile dans la cible, je suis avec attention la discussion.
:)

"Quand a l' opérateur sur les bit & ; ils nous permet de savoir si un bit est à 1 ou à 0".
Là, je dis oui. Mais… en ajoutant encore quelques efforts.
Donc ça ne ressemble pas pour moi à une définition du rôle de &. Plutôt une conséquence, un usage détourné.

#32 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 19 May 2011 - 00:16 AM

coucou;



l'opérateur plus dans le monde flash ne se pose pas de problème il est toujours vrai; `
ajoute des booelan avec des String il te dira toujours que c'est bon..
par exemple:
var bleu:Boolean =false;
var couleur:String="5"
if((couleur + bleu) ) trace("ok")
trace((couleur + bleu) )

on ne fait pas mieux que un ou zero pour résumer true ou false..je pense pas faire d'amalgame erroné..
Par exemple
var bleu:Boolean =false;
var couleur:int=5
trace((couleur + bleu) )
et le trace te donne 5..
var bleu:Boolean =true;
var couleur:int=5
trace((couleur + bleu) )
et le trace donne 6
donc on considère que true vaut 1 et false vaut zero..
flash est bete mais pas tant que ca..

var bleu:Boolean =true;
var couleur:Boolean=true
trace((couleur + bleu) )
ca donne 2

on peut donc considérer que true vaut 1 et false vaut 0..
mais je peux me tromper.

#33 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 19 May 2011 - 08:15 AM

Voir le messagehubeert, le 19 May 2011 - 00:16 AM, dit :

l'opérateur plus dans le monde flash ne se pose pas de problème il est toujours vrai; `

Moi, j'obtiens un false avec un plus, comme ceci :

var a:int=3;
var b:int=-3;
if(a+b) {
        trace("true");
}else{
        trace("false");
}
:?:

#34 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 19 May 2011 - 08:23 AM

Voir le messagehubeert, le 19 May 2011 - 00:16 AM, dit :

var bleu:Boolean =true;
var couleur:Boolean=true
trace((couleur + bleu) )
ca donne 2
J'entends bien la démonstration…
l'étape qui manque, c'est qu'il y a un transtypage induit :

var bleu:Boolean =true;
var couleur:Boolean=true
trace((int(couleur) + int(bleu)) )
… d'où les remarques de dada plus haut…

J'espère être clair. Je ne critique pas l'usage, mais le discours pédagogique construit sur un sous-entendu disant que c'est "logique" et l'approximation de formules comme "une addition est toujours vraie" qui ne se vérifient pas toujours…

#35 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 19 May 2011 - 08:30 AM

Ben dis donc j'aurais mieux fait de tester mon code moi!
HugoTR parlait de 0b, j'en ai déduit que ça existait en AS3.

Effectivement même si ça marche très bien de faire
if (1 & 3) trace("ok")
je pense qu'il faut quand même expliquer ce qui se passe vraiment quand on le fait.

#36 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 19 May 2011 - 08:31 AM

Les convertions implicites comme ça ne compilent que parce que le compilo AS est un peu laxiste et que le Flash Player adapte par derrière. Dans d'autres langages plus strictes ça donne une erreur de type.
Comme il s'agit d'un tuto et qu'une des difficultés les plus récurrentes chez les débutants est de maîtriser les types de données, autant le faire clair. ;)

#37 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 19 May 2011 - 09:00 AM

Voir le messageDldler, le 19 May 2011 - 08:23 AM, dit :

Je ne critique pas l'usage, mais le discours pédagogique construit sur un sous-entendu disant que c'est "logique" et l'approximation de formules comme "une addition est toujours vraie" qui ne se vérifient pas toujours…


Voir le messagelilive, le 19 May 2011 - 08:30 AM, dit :

je pense qu'il faut quand même expliquer ce qui se passe vraiment quand on le fait.


Voir le messagedada, le 19 May 2011 - 08:31 AM, dit :

Les convertions implicites comme ça ne compilent que parce que le compilo AS est un peu laxiste et que le Flash Player adapte par derrière. Dans d'autres langages plus strictes ça donne une erreur de type.
Comme il s'agit d'un tuto et qu'une des difficultés les plus récurrentes chez les débutants est de maîtriser les types de données, autant le faire clair. ;)

lol

Je crois qu'on est d'accord, il y a des trucs à ne pas passer sous silence.

#38 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 19 May 2011 - 10:15 AM

coucou;
Bien sur autant etre clair..

J'avais précisé au début que pour se servir du binaire il fallait se servir des uint: des entier sur 32 bit non signé.. toujours positif donc..
Je ne prétends pas faire un cour sur le typage :oops:
mais jene crois pas qu'ici il y ai de probleme de typage j'ai employé booléen a tort.
jene crois pas non plus qu'il y ai de conversion implicite ou pas; l'erreur proviens du fait que le resultat est soit zero soit superieur a zero.
pour rendre justice a Dldler l'operateur "+" n'est pas toujours vrai.. :roll:
dans ton exmple il y a une convertion implicite du a l'operateur +
voir : convertion implicite et explicite en AS
Meme si le résultat est un Number ; le resultat dans le cas qui nous occupe est le fruit d'une opération "booléenne" (entre guillemet) qui a comparé bit a bit ; si un bit est egal a 1 dans chaque operande le résultat donne 1.

if (1 & 3) trace("ok") que se passe til?
en binaire 1 est egal a 1
en binaire 3 est egal a 11
l'operateur & compare bit a bit si le bit est egal a 1 dans chaque opérande le resultat donne 1
donc il regarde le bit 0 dans l'operande un il est égal a 1 et le bit 0 dans l'opérande deux est aussi egal a 1 le resultat donne 1
puis il regarde le bit 1 dans l'operande un il est égal a 0 et le bit 1 dans l'opérande deux est egal a 1 le resultat donne 0
donc 1 & 3 donne 1

Avant d'aller plus loin; mon tuto n'est que le résultat d'observation et d'usage empirique. Il se peut et c'est même probable que des termes mal employés voire des erreurs se glissent dedans ; meme sil cela ne devrait pas :oops: et pour cela je vous remercie tous de vos remarques qui me permettent de corriger le tir. merci a toutes et tous

#39 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 19 May 2011 - 10:47 AM

Voir le messagehubeert, le 19 May 2011 - 10:15 AM, dit :

if (1 & 3) trace("ok") que se passe til?
en binaire 1 est egal a 1
en binaire 3 est egal a 11
l'operateur & compare bit a bit si le bit est egal a 1 dans chaque opérande le resultat donne 1
donc il regarde le bit 0 dans l'operande un il est égal a 1 et le bit 0 dans l'opérande deux est aussi egal a 1 le resultat donne 1
puis il regarde le bit 1 dans l'operande un il est égal a 0 et le bit 1 dans l'opérande deux est egal a 1 le resultat donne 0
donc 1 & 3 donne 1

Je ne parlais pas de cela, car je ne doute pas que tu en donnes l'explication d'une façon ou d'une autre dans le tuto, puisque tu y expliques l'opérateur &.
Je parlais de cette histoire de conversion. A vérifier, mais je crois que si tu fais:
if (une expression)
alors si le résultat de l'expression n'est pas un booléen, ce résultat est implicitement converti en booléen. Il me semble que c'est de cela dont on parle depuis plusieurs posts, non? En faisant 1&3 le résultat est un nombre, qui va être converti en booléen, et c'est pour cela que le test marche.
Mais comme le dis dada c'est une facilité propre à l'AS, qui nous évite d'avoir à écrire
if (1&3 != 0)

#40 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 19 May 2011 - 10:47 AM

Voir le messagehubeert, le 19 May 2011 - 10:15 AM, dit :

jene crois pas non plus qu'il y ai de conversion implicite ou pas; l'erreur proviens du fait que le resultat est soit zero soit superieur a zero.

Dans le fond ya pas d'erreur (pas en AS en tous cas), c'était juste une petite remarque pour rendre plus précis (et explicite) le code du tuto.
Mais ya bien une conversion implicite :D, une condition attend toujours un Boolean :
http://help.adobe.co...tements.html#if

Citation

Parameters
condition:Boolean — An expression that evaluates to true or false.
Vu que tu donnes un int, le compilo laxiste laisse passer l'erreur de type Boolean<->int, et le Flash Player fait dynamiquement la conversion (0=false, autre chiffre=true).
Nous, ce qu'on veut c'est savoir, par exemple, c'est si a & b est supérieur à zéro (ou différent mais ce sera positif de toutes façons), donc on écrit le code "> 0". :P Et à ce moment là c'est bien un Boolean qu'on donne au if.

C'est peut-être du détail, mais pour un débutant c'est important je trouve, car ça peut être confu. C'est comme d'écrire while (cont.numChildren) : c'est une erreur de type même si ça compile, on devrait écrire while (cont.numChildren > 0), plus précis du point de vue code et surtout plus parlant pour un débutant. :)

#41 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 19 May 2011 - 11:03 AM

coucou;
je suis un peu a la bourre et merci de vos remarques.
ceci if (1&3 != 0) trace ("ok)
n'est pas bon ca sera tjs vrai même dans le cas ou ce n'est pas vrai..(essaye if(1&2 !=0)
il faut dabord evaluer 1&3 et le comparer..
soit if(((1&3) !=0)
meme remarque pour
if(1&2 >0)
donne vrai alors que c'est faux :roll: mais cest un détail !!
bonne journée..

#42 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 19 May 2011 - 11:10 AM

Oui exact pardon pour les parenthèses. Le doute m'a effleuré mais je me suis dis que ça irait bien comme ça pour me faire comprendre...

#43 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 19 May 2011 - 11:18 AM

Citation

ceci if (1&3 != 0) trace ("ok)
n'est pas bon ca sera tjs vrai même dans le cas ou ce n'est pas vrai..(essaye if(1&2 !=0)
il faut dabord evaluer 1&3 et le comparer..
soit if(((1&3) !=0)
meme remarque pour
if(1&2 >0)
donne vrai alors que c'est faux :roll: mais cest un détail !!
Oui, j'avais pas fait gaffe à l'importance des parenthèses en effet.
Ce qu'on veut tester c'est : (1&2) != 0
et non pas : 1&2 != 0
:)

#44 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 19 May 2011 - 12:44 PM

Hubert, peut tu me montrer un exemple concret de l'usage des bits ?

#45 hubeert

  • Members
  • PipPipPipPipPipPipPipPip
  • 925 messages

Posté 19 May 2011 - 16:04 PM

Coucou,
Oui bien sur je peux montrer des exemple un peu plus haut dans le fil il y un peu de code qui avec des balles qui génère des etquettes, j'avais laisser aussi la mise en place des condition pour faire le tarif mais je n ai pas mis le code correspondant.
Mon gros problème c'est que tout est code en as2 et que je connais très peu l as3 LOL mais sinon ça ne doit pas être trop ardu a transcrire je ferais ça ce soir car je suis au travail la.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP