IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Pascal Discussion :

Utilisation des opérateurs 'shr' et 'and'


Sujet :

Langage Pascal

  1. #21
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bai,

    Je ne vois pas de "zéro entre parenthèse".
    Si les cons volaient, il ferait nuit à midi.

  2. #22
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    entre guillemet.....

  3. #23
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bao,
    Citation Envoyé par cicinho Voir le message
    entre guillemet.....
    J'avais bien compris.

    Ma remarque était là pour te faire ... remarquer que ta question concerne du Pascal absolument basique, et que tu devrais comprendre facilement de quoi il s'agit.
    Si les cons volaient, il ferait nuit à midi.

  4. #24
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    pas vraiment dans le sens ou écrire cette ligne de code revient pour moi :

    soit a remettre a zéro la chaine S a partir du deuxième caractère, pour moi cela semble la meilleure réponse mais ds ce cas pourquoi la ligne juste au dessus est

    s := '100000000.............000' ( 128 zéro)

    c'est comme ci il réecrivai deux fois la meme chose.. serai ce pour faire une tempo je ne pense pas.
    donc pour moi la seule explication qu'il y avait.. était qu'il recopie la valeur de zéro en ascii ds la chaine S. mais je ne l'aurais pas ecrit comme ca, en tout cas pas en C.

  5. #25
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Voe,
    Citation Envoyé par cicinho Voir le message
    pas vraiment dans le sens ou écrire cette ligne de code revient pour moi :

    soit a remettre a zéro la chaine S a partir du deuxième caractère, pour moi cela semble la meilleure réponse mais ds ce cas pourquoi la ligne juste au dessus est

    s := '100000000.............000' ( 128 zéro)

    c'est comme ci il réecrivai deux fois la meme chose.. serai ce pour faire une tempo je ne pense pas.
    donc pour moi la seule explication qu'il y avait.. était qu'il recopie la valeur de zéro en ascii ds la chaine S. mais je ne l'aurais pas ecrit comme ca, en tout cas pas en C.
    Ce n'est pas par rapport à toi qui compte, mais par rapport à la syntaxe de Pascal.
    Si les cons volaient, il ferait nuit à midi.

  6. #26
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    // convertis un entier 8bits dans sa representation binaire.
    // exemple $FF ou 255 devient 11111111
    // exemple $00 ou 0    devient 00000000
    // exemple $80 ou 128 devient 10000000
     
    function bin(n: byte): string;
     
     
     
    var
     cpt : byte;        // variable de la boucle For
     s    : string[8];   // chaine temporaire pour le retour
     
     
    begin
     
     
      // initialisation de la chaine temporaire.
      s:=' '; 
     
      // pour cpt de 0 a 7 (8 itérations)
      for cpt:=0 to 7 do
      begin
     
        // si bit 0 de N est égal a 1 alors on ajoute "1" à la fin de S 
        if n and 1=1 then 
           s:=s+'1'
     
        // sinon on ajoute un 0 à la fin de S
        else 
          s:=s+'0';
     
        // on décale les bits de N de 1 vers la droite 
        n := n shr 1;
      end;
     
      // enfin on renvois la chaine temporaire S dans le resultat de fonction
      bin := s;
    end;


    cette fonction, est bonne, mais ont peu faire plus simple (pour byte) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function Bin(const N: byte): string;
    const
      BTC : array[boolean] of char = '10';
    begin
      result := BTC[ (N and $80) = 0 ] +
                BTC[ (N and $40) = 0 ] +
                BTC[ (N and $20) = 0 ] +
                BTC[ (N and $10) = 0 ] +
                BTC[ (N and $08) = 0 ] +
                BTC[ (N and $04) = 0 ] +
                BTC[ (N and $02) = 0 ] +
                BTC[ (N and $01) = 0 ];
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  7. #27
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Boe,

    On y repère facilement du code qui est tout désigné pour l'utilisation d'une boucle for, comme c'était le cas dans le programme que tu cites.

    Les boucles sont faites pour être utilisées, ne serait-ce que pour simplifier la lecture du code, et faciliter sa réutilisation.

    Exemple : faire la même chose pour un word ==>

    - avec une boucle, il suffit de changer les limites de la boucle

    - avec ta démarche, il faut ajouter 8 lignes, en évitant de se tromper sur les constantes utilisées.

    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/12/2009, 14h34
  2. Réponses: 3
    Dernier message: 02/07/2007, 17h32
  3. [SQL] Utilisation des opérateurs SQL plutôt que PHP
    Par php_newbie dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/05/2006, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo