Inversion de bit dans un octet [Résolu]

Boolibool 5 Messages postés samedi 11 juin 2016Date d'inscription 11 juin 2016 Dernière intervention - 11 juin 2016 à 10:54 - Dernière réponse : Boolibool 5 Messages postés samedi 11 juin 2016Date d'inscription 11 juin 2016 Dernière intervention
- 11 juin 2016 à 19:39
Bonjour, pour une matrice de led, je cherche a inverser la valeur des bits qui me sont donnés par un logiciel ( B01110011 deviendrait B10001100, par exemple). J'aimerais pouvoir le faire depuis un logiciel car il y en a des quantité industrielles. L'idéal étant de pouvoir procéder par copier-coller. Existe t-il une solution simple sachant que je ne suis pas du tout programmeur. Merci de vos réponses.
Afficher la suite 

11 réponses

Répondre au sujet
KX 15363 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 11 juin 2016 à 11:02
0
Utile
4
Bonjour,

C'est une opération des plus simples faisables avec n'importe quel langage de programmation, elle est même directement implémentée par les processeurs.

Par contre, je ne vois pas trop le rapport entre une matrice de LED, et le copier-coller que tu veux faire...

Remarque : mathématiquement on peut faire une soustraction.
11111111-01110011=10001100
Boolibool 5 Messages postés samedi 11 juin 2016Date d'inscription 11 juin 2016 Dernière intervention - 11 juin 2016 à 11:50
Je me suis mal expliqué: j'ai des suites de bits (B11001100, B01010101 ,ceci 15 fois * 200 ) qui me sont données par un logiciel pour représenter un motif (dessin, texte...) dans une matrice de led (un globe rotatif rgb ). Le problème est que mes led sont a anodes communes alors que le projet initial fonctionne avec des led a cathodes communes. Donc , je dois inverser la valeur de tous les bits pour allumer (ou éteindre ) les leds. Je voudrais savoir s'il existe un soft qui pourrait faire cette inversion . ah oui j'oublie : le soft me sort un fichier txt que je dois copier dans l'IDE arduino. C'est ce fichier que je veux copier-coller dans le soft pour qu'il fasse l'inversion et qu'ensuite je le re-copie dans l'IDE. Tout ça pour m’éviter de passer des heures a le faire manuellement car il y en a beaucoup. Voila, j’espère avoir été plus clair, merci
KX 15363 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 11 juin 2016 à 12:43
Si j'ai bien compris tu peux :

1) Ouvrir ton fichier .txt (avec le bloc notes ça suffit)
2) Rechercher/Remplacer (Ctrl+H) tout les 0 en 2 (par exemple)
3) Remplacer tout les 1 en 0
4) Remplacer tout les 2 en 1
Whismeril 11407 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention > KX 15363 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 11 juin 2016 à 13:26
Oui aussi!
Boolibool 5 Messages postés samedi 11 juin 2016Date d'inscription 11 juin 2016 Dernière intervention - 11 juin 2016 à 17:16
Me re-voilà. Oui c'est bien ce que je veux faire , remplacer tous les 0 en1 et tous les 1en 0. J'aurais pu expliquer ça aussi simplement, merci KX,déjà ça m'aide !!!
Commenter la réponse de KX
Whismeril 11407 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention - 11 juin 2016 à 12:30
0
Utile
5
Bonjour,


Ce que tu cherches à faire est relativement simple, même sans trop se compliquer la tâche, plutôt que copier coller tes valeurs, tu peux écrire, un soft qui lit le fichier source et écrit un fichier cible.

Mais si tu ne te sens pas d'essayer, tu dois pouvoir le faire dans Excel.
Ça ne sais pas faire la soustraction en binaire comme propose KX, mis ça sais convertir d'une base vers une autre.
https://support.office.com/fr-fr/article/Convertir-des-chiffres-dans-différents-systèmes-numériques-880eeb52-6e90-4a9d-9e56-acaba6a27560#bmconvert_a_binary_number_to_decimal

Tu ouvres ton fichier, tu convertis en décimal, tu soustrais, et tu convertis le résultat en binaire.
KX 15363 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 11 juin 2016 à 12:41
"dans Excel. Ça ne sais pas faire la soustraction en binaire comme propose KX"

Le calcul 11111111-01110011=10001100 est également vrai en décimal ;-)
Boolibool 5 Messages postés samedi 11 juin 2016Date d'inscription 11 juin 2016 Dernière intervention - 11 juin 2016 à 18:40
Merci Whismeril, l'idée d’écrire un soft me parait la meilleure solution plutôt que de convertir une multitude de ligne "a la main". Le problème est au niveau programmation, je sais tout juste faire tourner des moteurs pas a pas en c/c++ avec arduino. Disons que je me débrouille plus en électronique qu'en informatique. En même temps ça me ferais apprendre, ce qui ne serais pas un mal ! Du coup je serais preneur d'exemple ou de tout ce qui pourrait m'avancer.
KX 15363 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention > Boolibool 5 Messages postés samedi 11 juin 2016Date d'inscription 11 juin 2016 Dernière intervention - 11 juin 2016 à 18:49
Je pense que programmatiquement le plus simple est de faire exactement ce que je disais plus haut : tu considères l'ensembles de ton fichier, tu remplaces tout les 0 en un caractère pivot (2 par exemple), puis tout les 1 en 0, et tout les pivots en 1.
KX 15363 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention > KX 15363 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 11 juin 2016 à 19:00
Exemple en Java :

package ccm.kx;

import java.nio.file.*;

public class TextTools {

    public static String revert(String text, char c1, char c2, char tmp) {
        text = text.replace(c1,  tmp); // c1  ← tmp
        text = text.replace(c2,  c1);  // c2  ← c1
        text = text.replace(tmp, c2);  // tmp ← c2
        return text;
    }

    public static void main(String[] args) throws Exception {
        Path path = Paths.get("C:/test.txt");
        String text = new String(Files.readAllBytes(path));
        text = revert(text, '0', '1', '§');
        Files.write(path, text.getBytes());
    }
}
Boolibool 5 Messages postés samedi 11 juin 2016Date d'inscription 11 juin 2016 Dernière intervention > KX 15363 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 11 juin 2016 à 19:39
D'accord j'ai compris et... ça marche !!! En fait c'est très simple, je ne connaissais pas le control+H ( ca m'apprendra a consulter les manuels !!). Mille merci KX et bonne soirée a toi.
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.