Inversion de bit dans un octet

Résolu
Boolibool Messages postés 5 Date d'inscription samedi 11 juin 2016 Statut Membre Dernière intervention 11 juin 2016 - 11 juin 2016 à 10:54
Boolibool Messages postés 5 Date d'inscription samedi 11 juin 2016 Statut Membre Dernière intervention 11 juin 2016 - 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.

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
11 juin 2016 à 11:02
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
0
Boolibool Messages postés 5 Date d'inscription samedi 11 juin 2016 Statut Membre Dernière intervention 11 juin 2016
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
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
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
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
11 juin 2016 à 13:26
Oui aussi!
0
Boolibool Messages postés 5 Date d'inscription samedi 11 juin 2016 Statut Membre Dernière intervention 11 juin 2016
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 !!!
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
11 juin 2016 à 12:30
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.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
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 ;-)
0
Boolibool Messages postés 5 Date d'inscription samedi 11 juin 2016 Statut Membre Dernière intervention 11 juin 2016
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.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127 > Boolibool Messages postés 5 Date d'inscription samedi 11 juin 2016 Statut Membre Dernière intervention 11 juin 2016
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.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
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());
    }
}
0
Boolibool Messages postés 5 Date d'inscription samedi 11 juin 2016 Statut Membre Dernière intervention 11 juin 2016 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
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.
0
Rejoignez-nous