Binaire, débutant, problème de compréhension
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Binaire, débutant, problème de compréhension



  1. #1
    chabichoun

    Binaire, débutant, problème de compréhension


    ------

    bonjour tout le monde, je sais que c'est un peu tard pour commencer un dm qui est a rendre pour demain, mais je pensais qu'il était à rendre pour vendredi, et que j'aurais tout le loisir de m'y consacrer demain aprés midi... mais non, bref...

    je ne dit pas que je ne sais pas faire (c'est ma toute première année d'informatique)
    mais je ne comprend pas ce que le prof veux !

    bref, on avait à créer un programme qui est celui-ci :
    http://isnangellier.alwaysdata.net/binaire_decimal.html

    Voici l'énoncé du DM :
    "reprendre le DM 1 et le code du programme permettant la conversion du binaire au décimal puis la conversion du décimal au binaire pour :
    1. réaliser la conversion du binaire signé sur 16 bits au décimal

    2.réaliser la conversion du décimal au binaire signé sur 16 bits


    bon, après, le reste de l'exo, c'est du code...
    mais pour ces premières questions, je comprend rien

    -----

  2. #2
    fred1599

    Re : Binaire, débutant, problème de compréhension

    Bonsoir,

    Il manque de savoir quel langage...

    Ensuite, dans le lien que tu donnes, tu as regardé le code source de la page ? L'algorithme (même si j'ai jamais utilisé le javascript) est clair, et selon le langage que tu devras utiliser, l'adapter sera un jeu d'enfant.

    En fait quel est la difficulté pour toi dans cet exercice ? As-tu fais quelque chose ? un début ? une idée ? un algorithme sur papier ? Bref environ 22h, tu as écris à 20h, en 2h tu as dû avancer un peu et à sans doute quelque chose à nous montrer.

  3. #3
    chabichoun

    Re : Binaire, débutant, problème de compréhension

    oui et non...

    j'ai essayé quelques trucs...
    et à un moment donné, j'ai demandé de l'aide à mon prof (surtout pour la suite du DM), parce que tout ce que je faisais ne marchait pas
    puis il m'a donné le début de la modification...
    et même si c'était le bon truc, ben ça marchait toujours pas (je sais pas pourquoi, le programme marche quand il est vierge, et une fois que j'ai rajouté un truc, paff, plus rien ne marche)

    sinon, pour les deux premieres questions pour lesquelle j'ai créé le topic, non, j'ai toujours pas trouvé


    mais par contre, la suite du DM, c'est qu'il faut écrire une condition pour forcer l'utilisateur a écrire un mot binaire en 16 bits, et que si c'est pas 16 bits, il faut lui envoyer un message d'erreur...

    perso, j'avais pensé à
    Code PHP:
    if ((n<16)||(n>16))
    {
    echo 
    "Veuillez écrire un mot binaire de 16 bits SVP"

    j'ai testé, ça a pas marché, le prof m'a dit
    Code PHP:
    le nombre de chiffre du mot binaire est donné par var n=binaire.length;
    essaye if (n!=16) {écrit le message d’erreur

    j'ai essayé, ça a pas marché non plus...
    et j'en ai marre, car si ça donne rien, je peux avoir faux comme avoir bon, je ne le saurais même pas

  4. #4
    fred1599

    Re : Binaire, débutant, problème de compréhension

    C'est du javascript ? Si oui le code source est carrément donné dans ton lien du 1er post...

  5. A voir en vidéo sur Futura
  6. #5
    chabichoun

    Re : Binaire, débutant, problème de compréhension

    oui, c'est du javascript

    en fait, le full énoncé de mon DM est là

    https://docs.google.com/file/d/0B6JM...FMVHhhUWc/edit

    et le DM1 sur lequel tout est basé, est là
    https://docs.google.com/file/d/0B6JM...84ZHpLMzA/edit


    j'ai compris grossièrement ce qu'il faut faire, mais je sais pas comment je dois le faire, je ne sais pas ou je dois modifier exactement, et qu'est ce que je dois exactement rentrer pour que ça fonctionne....
    Dernière modification par chabichoun ; 24/09/2014 à 16h13.

  7. #6
    fred1599

    Re : Binaire, débutant, problème de compréhension

    Si je fais un copier coller du code source, et la fonction1 qui permet la conversion binaire/décimal

    Code:
    function myFunction1() {//définition de la fonction
      
    var binaire = document.getElementById("binaire").value;// la variable binaire est le mot binaire entré = chaîne de caractères ou string
    
    var n=binaire.length;//la méthode string.length donne la longueur du mot string
    
    var resultat=0;//initialise la variable numérique resultat
    
    for (i=0;i<=n-1;i++) {//réalise une boucle pour parcourir les n bits qui constituent le mot binaire; on utilise une boucle for car le nombre de pas dans la boucle est connu, il vaut n.
     
    resultat += Number(binaire.charAt(n-i-1))*Math.pow(2,i);/* += le résultat augmente d'une quantité égale au chiffre 0 ou 1, placé à la position (n-i-1) du mot binaire, que multiplie 2^i à chaque tour de la boucle;
    on utilise la méthode  chaine.charAt(i) qui retourne le caractère de la chaîne situé à la position i 
    sachant que le premier caractère, en partant de la gauche, d’une chaîne correspond à l’indice 0;
    ici, on lit la suite de caractères de droite à gauche.
    On utilise la méthode Number qui convertit ce mot ou string, constitué ici d'un seul caractère, en nombre : exemple: Number(“3”)=3; enfin on utilise Math.pow(a,b) qui permet d’élever a à la puissance b.*/
    
    }
    Si je le faisais en python ça donnerait cela par exemple

    Code:
    def myFunction1(binary):
        length = len(binary)
        resultat = 0
        for i in range(length):
            resultat += int(binary[length-i-1]) * 2**i
        return resultat
    
    print(myFunction1("1011")) # donne la valeur 11
    Peut-être trouves-tu l'algorithme plus lisible avec ce langage... mais c'est strictement le même algo.

  8. #7
    chabichoun

    Re : Binaire, débutant, problème de compréhension

    plus lisible, oui, certainement c'est mieux quand c'est épuré...
    après, plus facile à comprendre... je sais pas ...


    en attendant, j'ai répondu à toutes les questions du dm (et comme le prof y nous a rien filé comme code de script pour nous débrouiller, j'ai fait ce que j'ai pu:

    (en plus, je sais pas pourquoi, mais dès le début, quand je bidouillais un 'tit truc (genre rajouter un "if"), y'a déjà plus rien qui marchait, donc j'ai tout fait comme je pensais que ça pourrait être, mais je sais pertinnament que c'est de la merd* que j'ai fait....
    mais c'est pas ma faute, le prof y nous a filé que dalle pour nous aider.....


    Code PHP:
    <!DOCTYPE html>
    <
    html>
    <
    head>
    <
    title>Conversion binaire décimal et conversion décimal binaire</title>
    <
    meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </
    head>
    <
    body>

    <
    p><u>Passage du binaire signé sur 16 bits au décimal</u></p><!--titre souligné -->

    Entrer un mot binaire : <input id="binaire"/><!--donne l’identifiant “binaire” au mot binaire entré -->

    <
    br><!--saute une ligne -->
    <
    br>

    <
    button onclick="myFunction1()">Envoyez</button><!--myFunction1() est appelée lorsque le bouton est cliqué -->

    Résultat de la conversion : <span id="reponse1"></span> <!--la réponse 1 se logera dans cet espace-->

    <
    script>// début du script



    function myFunction1() {//définition de la fonction
      
    var binaire document.getElementById("binaire").value;// la variable binaire est le mot binaire entré = chaîne de caractères ou string

    var n=binaire.length;//la méthode string.length donne la longueur du mot string

    var resultat=0;//initialise la variable numérique resultat


    if (var n!=16) {
        echo 
    "Veuillez écrire  un mot binaire de 16 bits SVP";
    }
    document.getElementByld("reponse1").innerHTML "erreur";
    return; 
    //pour sortir immédiatement de la fonction

    if (var binaire!=[ "0","1" ]
    then var binairefalse 
    document
    .getElementByld("reponse1").innerHTML "erreur";
    return; 
    //pour sortir immédiatement de la fonction



    for (i=0;i<=n-1;i++) {//réalise une boucle pour parcourir les n bits qui constituent le mot binaire; on utilise une boucle for car le nombre de pas dans la boucle est connu, il vaut n.
     
    if ( first.value var binaire =1)
    do (
    i=0;i<=n-1;i++)-2^16


    resultat 
    += Number(binaire.charAt(n-i-1))*Math.pow(2,i);/* += le résultat augmente d'une quantité égale au chiffre 0 ou 1, placé à la position (n-i-1) du mot binaire, que multiplie 2^i à chaque tour de la boucle;
    on utilise la méthode  chaine.charAt(i) qui retourne le caractère de la chaîne situé à la position i 
    sachant que le premier caractère, en partant de la gauche, d’une chaîne correspond à l’indice 0;
    ici, on lit la suite de caractères de droite à gauche.
    On utilise la méthode Number qui convertit ce mot ou string, constitué ici d'un seul caractère, en nombre : exemple: Number(“3”)=3; enfin on utilise Math.pow(a,b) qui permet d’élever a à la puissance b.*/

    }

        
    document.getElementById("reponse1").innerHTML resultat;//affiche le résultat dans réponse1
    }
    </script>

    <br>
    <br>
    <p><u>Passage du décimal au binaire signé sur 16 bits</u></p>

    Entrer un nombre entier naturel: <input id="decimal"/><!--donne l’identifiant “decimal” au mot binaire entré -->

    <br>
    <br>

    <button onclick="myFunction2()">Envoyez</button><!--myFunction2() est appelée lorsque le bouton est cliqué -->
    if ( first.value var decimal =1)
    do (i=0;i<=n-1;i++)+2^16

    if ( var decimal > 255 ) {
        echo "Veuillez écrire un nombre decimal qui admet une conversion binaire sur 16 bits"
    }
    document.getElementByld("reponse2").innerHTML = "erreur";
    return; //pour sortir immédiatement de la fonction

    Résultat de la conversion : <span id="reponse2"></span><!--la réponse 2 se logera dans cet espace-->

    <script>



    function myFunction2() {//définition de la fonction

    var temp="";//définit une variable temporaire qui est initialement une chaîne de caractère vide
      
    var decimal = document.getElementById("decimal").value;

    var dividende=decimal;

    var quotient = Math.floor(dividende/2);//donne la partie entière  de la division du dividende par 2

    var reste = String(dividende%2);// a%b donne le reste de la division de a par b; la méthode String() transforme en chaîne de caractères le nombre trouvé

    var temp=reste;




    while (quotient>0) {/* on utilise ici une boucle while car on ne sait pas combien de tours seront effectués dans la boucle,
        on sait juste quand il faudra en sortir*/

    dividende=quotient;//à chaque tour de boucle, le quotient de la division précédente devient le nouveau dividende

    quotient=Math.floor(dividende/2);

    reste = String(dividende%2);//il faut réitérer le processus dans la boucle

    temp +=reste;// à chaque tour de boucle, on ajoute ou concatène un nouveau caractère pour former le string temp

    }

    var n=temp.length;// on mesure la longueur de la chaîne temp
    var resultat="";//initialise la variable resultat qui initialement est une chaîne de caractère vide

    for (i=0;i<=n;i++) {

    resultat +=temp.charAt(n-i-1);// la chaîne de caractère temp doit être renversée pour obtenir le résultat final attendu

    }

        document.getElementById("reponse2").innerHTML = resultat;

    }
    </script>





    </body>
    </html> 

  9. #8
    fred1599

    Re : Binaire, débutant, problème de compréhension

    Je ne connais pas le javascript, mais comme je l'ai traduis en python, c'est qu'il est lisible, compréhensible et surtout fonctionnel.

    Le code me semble correct, la seule chose, c'est que je trouve cette ligne

    Code:
    document.getElementById("reponse1").innerHTML = ...
    répétitive, j'aurais donc mis le résultat dans une variable et aurait inscrit ce type de ligne à la fin de tes tests.

    Ensuite il y a cette ligne

    Code:
    if (var binaire!=[ "0","1" ]
    que je ne comprend pas, car tu vas comparer chaque caractère, et donc vérifier que ce caractère vaut soit '0', soit '1'... ça serait donc dans la boucle, non ?

  10. #9
    chabichoun

    Re : Binaire, débutant, problème de compréhension

    oui, je pense que c'est une boucle (d'après ce que j'ai compris) :/

    bon, le dm était à rendre pour aujourd'hui avant 21h, donc j'lai rendu y'a un quart d'heure après avoir re modifier quelques trucs
    merci quand même de bien avoir voulu m'aider :/

Discussions similaires

  1. Réponses: 15
    Dernier message: 22/10/2013, 18h16
  2. Débutant: Compréhension Transistor NPN
    Par muska_fr dans le forum Électronique
    Réponses: 6
    Dernier message: 20/09/2013, 08h45
  3. Problème codeur binaire --> BCD
    Par invite03af8ae7 dans le forum Électronique
    Réponses: 26
    Dernier message: 18/10/2012, 17h07
  4. Passage de Binaire Naturel à Binaire reflechis. [1STI]
    Par invite5e1b98cd dans le forum Électronique
    Réponses: 7
    Dernier message: 12/11/2009, 20h34
  5. Debutant cherche Aide pour LOGIQUE BINAIRE
    Par invite8a25bede dans le forum Électronique
    Réponses: 12
    Dernier message: 04/11/2005, 21h45