[C] nombres binaires

nombres binaires [C] - C - Programmation

Marsh Posté le 07-12-2008 à 16:32:45    

bonjour,
 
j'ai une petite question toute bête..
 
Comment travailler directement avec des nombres binaires en C ?
 
Lorsque je travaille avec des nombres en hexadécimal je précède mes nombres de 0x, en octal de 0, mais je ne connais pas le préfixe pour le binaire. J'ai essayé 0b mais c'est pas ça vu le message du compilateur (gcc)...
 
merci pour votre aide.
 
A+

Reply

Marsh Posté le 07-12-2008 à 16:32:45   

Reply

Marsh Posté le 07-12-2008 à 17:33:50    

Y a pas de prefixes de tete.
Tu veut faire quoi ? Car bon les opérations bit à  bit répondent certaienemnt à tes besoins

Reply

Marsh Posté le 07-12-2008 à 17:50:06    

En fait je dois affecter des valeurs sur un bus de 8 bits.. qui n'ont de sens que bit à bit. En effet, le bit 7 représente par exemple la validation en écriture sur mon dispositif, les bits 0 à 4 les données. etc.. et je peux très bien écrire directement la valeur en décimal, mais à lire par la suite c'est hautement incompréhensible, alors que si on lit directement la valeur en binaire dans le code, on comprend tout de suite ce qu'il fait...

Reply

Marsh Posté le 07-12-2008 à 17:59:33    

Utilise la représentation hexa ou fait des masques pour extraire les infos.


---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 07-12-2008 à 18:07:07    

+1
 
L'année dernière j'ai du programmer un micro-controlleur qui communiquait vers l'exterieur via SPI. Au début je trouvais plus "clair" d'écrire directement les nombres en binaire (comme ça je pouvais directement "voir" si ça passait bien avec un oscilloscope, mais après un moment (et surtout quand les trames deviennent longues) c'est juste un bordel de compter les 1/0. En hexa c'est beaucoup mieux (mais faut un peu d'habitude :o)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-12-2008 à 20:18:46    

bon c'est ce que j'ai fait... ça fonctionne très bien... mais dans le fond.. juste pour la culture... Y'a-t-il quand même moyen d'écrire directement des entiers en binaire avec gcc?

Reply

Marsh Posté le 08-12-2008 à 09:33:41    

Non, on ne peut pas écrire directement en binaire.
 
Par contre, pour les manipuler facilement (outre les masques en hexa), il y a les champs de bits.

Reply

Marsh Posté le 08-12-2008 à 10:15:33    

Non, les champs de bits ne sont pas faits pour ça. Dans un champs de bits, tu ne peux pas savoir a priori à quel bit correspond un champs donné. Certains compilos commencent par les bits de poid fort, d'autres pas les bits de poid faible. Utiliser un champs de bits pour accéder à des bits précis d'un mot n'est donc absolument pas portable.

Reply

Marsh Posté le 08-12-2008 à 12:22:07    

Certains compilateurs permettent de manier directement des bits avec le préfixe "0b" mais mieux vaut utiliser des nombres hexadécimaux et/ou des masques.

Reply

Marsh Posté le 08-12-2008 à 14:16:02    

Edwardkei a écrit :

Certains compilateurs permettent de manier directement des bits avec le préfixe "0b".


je suis bien curieux de savoir lesquels :o

Reply

Marsh Posté le 08-12-2008 à 14:16:02   

Reply

Marsh Posté le 08-12-2008 à 15:19:26    

Je n'ai jamais vu le préfixe 0b ! GDB permet de manier directement les chiffres en binaire, mais c'est uniquement pour debugguer un programme C / C++ (et bien d'autre !)
 
La meilleure solution est encore d'utiliser la base hexadécimal, qui est la plus simple à transcrire (de tête) vers le binaire.


---------------
~~~ --- Toutla.com --- Programmation, Graphisme, Curseur ~~~
Reply

Marsh Posté le 23-12-2008 à 22:55:59    

Joel F a écrit :


je suis bien curieux de savoir lesquels :o


 

stan walker a écrit :

Je n'ai jamais vu le préfixe 0b !


"0b" existe bel et bien sur des compilo propriétaires pour du matos spécifique (exemple : MCC18)


---------------
iteme.free.fr | Mon feedback
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed