nombres binaires en C
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

nombres binaires en C



  1. #1
    invite66d75f15

    Unhappy nombres binaires en C


    ------

    Bonjour,

    J'ai un programme de chiffrement à faire; il est assez compliqué mais en gros l'utilisateur doit me donner un nombre entier de 1024 bits et ensuite mon programme chiffre ce nombre en effectuant des modifications sur les bits (et aussi sur les bytes).

    Je suis bloquée dès le départ, car je ne sais pas comment dire à mon gentil petit programme qu'il doit travailler sur les bits...j'aurais aimé que ce soit un type de variable à part, mais non...

    Alors, j'ai voulu tester la fonction itoa: itoa(entier, chaine de caractère, base 2)
    ça me donne bien la représentation binaire du nombre, mais dans une chaîne de caractère. D'une part, ce n'est pas pratique pour faire des xor, d'autre part la fonction itoa semble ne plus fonctionner à partir de l'entier 130001. Bref, ça ne m'aide pas.

    Les modifications à effectuer sur mon entier de départ son assez complexe (permutations d'octets, ajout d'une clé, et j'en passe). Je me dis que je pourrais faire le programme en utilisant les opérateurs binaires, et par exemple si je veux le premier octet de mon nombre je fais un & avec l'octet 11111111 qui correspond au nombre 255, puis j'inverse les bits du résultat. Mais, d'une part, si je dois faire ce genre d'opérations à chaque fois que je veux traiter un octet ça va être carrément lourd au final; et d'autre part, j'aimerais bien pouvoir voir le résultat, pour vérifier à chaque étape si tout fonctionne bien.
    En bref, je voudrais mon nombre en binaire. Si C est capable de faire des opérations sur sa représentation binaire, il doit bien être foutu de me la donner, non?

    toute idée sera la bienvenue

    -----

  2. #2
    Jack
    Modérateur

    Re : nombres binaires en C

    La plus petite taille de données gérée par le langage C est l'octet (type cher ou unsigned char). Après, il existe des artifices tels que les bits fields qui permettent de "simplifier" le travail en permettant de traiter des bits ou des groupes de bits.

  3. #3
    invite66d75f15

    Re : nombres binaires en C

    EDIT: euhh, je n'inverse pas les chiffres du résultat, désolée. Mais reste que, si je veux le 8ème octet, je dois faire un & avec 11111111 00000000 00000000 00000000 00000000 00000000 00000000 00000000. C'est super lourd. Et sur 1024 bits, j'ai 128 octets....


    merci pour ta réponse, mais je ne vois pas non plus comment gérer ça ^^
    unsigned char, pour moi c'est un caractère. Comment est-ce que ça peut correspondre à un octet? est-ce que je peux faire des opérateurs binaires avec des caractères??
    Quand à cher, je ne connaît pas, et mon compilateur non plus. Faut-il utiliser une librairie précise?

  4. #4
    pm42

    Re : nombres binaires en C

    Citation Envoyé par Floria Voir le message
    EDIT: euhh, je n'inverse pas les chiffres du résultat, désolée. Mais reste que, si je veux le 8ème octet, je dois faire un & avec 11111111 00000000 00000000 00000000 00000000 00000000 00000000 00000000. C'est super lourd. Et sur 1024 bits, j'ai 128 octets....
    Tu mets tes 128 bits dans un tableau de 16 entrées de 8 bits...


    Citation Envoyé par Floria Voir le message
    unsigned char, pour moi c'est un caractère. Comment est-ce que ça peut correspondre à un octet? est-ce que je peux faire des opérateurs binaires avec des caractères??
    Dans la norme C, un char = 8 bits = 1 octet. Et bien sur qu'on peut utiliser les opérateurs binaires.

    Citation Envoyé par Floria Voir le message
    Quand à cher, je ne connaît pas, et mon compilateur non plus. Faut-il utiliser une librairie précise?
    C'est char, la proximité avec unsigned char aurait pu permettre de corriger la faute de frappe (ou du correcteur automatique).

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : nombres binaires en C

    désolé pour le "cher", c'était bien sur "char" qu'il fallait lire.

    Pour le reste, un tableau d'octet est en effet un bon candidat pour gérer les 128 bits.

  7. #6
    invite66d75f15

    Re : nombres binaires en C

    ok, merci, c'est une bonne idée. Je vais essayer comme ça

  8. #7
    Dlzlogic

    Re : nombres binaires en C

    Bonjour,
    Lorsqu'on traite de fichiers raster, on travaille aussi au niveau du bit.
    Pour votre cas particulier, à mon avis, avant de chercher à savoir comment faire, vous devriez bien définir ce que vous voulez faire. Mettez-vous dans la peau de quelqu'un qui ne sait pas du tout programmer et dont le voisin n'a aucune idée de ce qu'est le cryptage mais sait très bien programmer. Donc, il vous faut d'abord lister toutes les opération à réaliser.

  9. #8
    invite6486d7bd

    Re : nombres binaires en C

    En c vous n'avez pas le choix vous devez gérer des tableaux les bits avec des tableaux (en C# ou C++ vous utiliseriez la classe système BitArray).

    La méthode hard : Comprendre et faire soi-même.
    La méthode soft : Voir comment ce problème commun a déjà été résolu (comme on peut s'en douter).

    Une explication avec exemple de code à la fin :
    http://www.mathcs.emory.edu/~cheung/...bit-array.html

  10. #9
    Dlzlogic

    Re : nombres binaires en C

    @ LeMulet,
    Les champs de bits font partie du C de base.
    Par ailleurs, on peut supposer que Floria a posé sa question sur un forum, non pas pour avoir le code tout fait, mais pour être aidée.

Discussions similaires

  1. [Numérique] Addition de nombres binaires en complément à deux
    Par invite1747da12 dans le forum Électronique
    Réponses: 12
    Dernier message: 11/02/2016, 23h57
  2. Diagrammes binaires
    Par invitecaf0afb7 dans le forum Chimie
    Réponses: 28
    Dernier message: 28/11/2015, 00h07
  3. Relations binaires
    Par invite2fafc4bd dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 05/12/2010, 17h30
  4. Technique de TP sur les binaires
    Par invite89508bf4 dans le forum Chimie
    Réponses: 1
    Dernier message: 21/06/2010, 21h12
  5. 0 Binaires
    Par ClaudeH dans le forum Logiciel - Software - Open Source
    Réponses: 15
    Dernier message: 05/02/2009, 17h13