1

Salut,
Je voulais savoir comment ecrire un nombre directement en binaire (j'ai essayé bValue = 0b10101010, mais sans resultat).
Bon j'ai essayer de trouver le flex de gcc et sans resultat... il faut dire que google est tres performant quand il s'agit de faire une recherche dans ce dommaine, il sort beaucoup de ....


Merci

2

Ce n'est pas possible.

3

sauf si le nombre vaut 0 ou 1 dehors
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

4

C'est marrant d'ailleurs que peu de langages permettent cette notation (en dehors d'ailleurs du Basic)
avatar

5

je le faisait en c avec tigcc (donc avec ggc ca doit marcher) et je crois que c ce que tu as mis 0b100101010

6

Non, la notation en 0b est spécifique à TIGCC (voir doc). Je me demande vraiment pourquoi ils n'inclusent pas cette possibilité dans GCC alors qu'ils permettent la notation en octal... C'est vraiment bête sad

7

Jyaif :
Je me demande vraiment pourquoi ils n'inclusent pas cette possibilité dans GCC alors qu'ils permettent la notation en octal...

parce que la notation en octal est prévue par la norme, depuis déjà la norme ANSI (peut-être même la norme K&R, je sais pas, mais ça se pourrait bien)
ceci pour raison historique, quand on bossait avec des groupes de trois bits pour je sais plus quoi (ah, y'a un passage là-dessus sur wikipedia : "At the time when octal originally became widely used in computing, systems such as the IBM mainframe employed 24-bit words. Octal was an ideal abbreviation of binary for these machines because eight digits could concisely display an entire machine word (each octal digit covering three binary digits)." ( http://en.wikipedia.org/wiki/Octal )) ; j'ajouterai que l'octal permet de n'utiliser que des chiffres (pas comme l'hexa qui demande des lettres), tout en étant plus compact que le binaire ; on peut encore penser à l'utilisation unixien de l'octal pour les permissions - et le C et UNIX sont très liés



avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

8

et je pense aussi que les développeurs de GCC commencent à se calmer sur les extensions, ce qui est une très bonne chose... donc même si ça coûte vraiment rien à rajouter dans le compilo lui-même, ils ne le font pas par souci de compatibilité ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

9

ok merci a touswink

10

Alors que pourtant ça peut être sympa pour tout ce qui est travail sur les masques...
avatar

11

avec un minimum d'habitude je trouve que c'est plutôt plus lisible en hexa, tu t'amuses pas à compter les 0 et les 1... (sauf quand c'est vraiment des graphiques, et encore ça peut rester plutôt lisible si y a beaucoup de zones unies)
enfin c'est clair que ça aurait été mieux si les premiers compilos l'avaient implémenté, mais c'est pas le cas ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

12

Ca tombe bien justement, parce que j'ai eu le meme problème. Moi je me suis fait une fonction qui, en utilisant la methode des divisions (euclidiennes) successives et en remplissant le tableau de char passe en parametre au fur et à mesure, renvoie une chaine contenant le nombre en format binaire. (D'ailleurs je n'ai pas été au dela de mes efforts - c'était ma propre initiative - car je n'ai inclus la possibilite de gerer la taille du nombre biniare à convertir). Je penses qu'en ecrivant en plus la foncton inverse (ou réciproque, que je ne me suis pas encore embêté à écrire), on peut tout faire avec les nombres binaires.
La fonction (int) -> (chaine) est hyper simple à écrire, et je ne suis pas très fort en programmation.
Le gentil timide du 64

13

Euh oué mais tu vas pas stocker tes nombres sous forme de chaines et les convertir en entiers au runtime quand même ? hum

14

Le but principal était de pouvoir afficher un entier sous forme binaire, chose que le compilateur ne permet pas de lui-même. Et après, en fait j'ai dit une bêtise, car du moment qu'on a l'entier, on n'a pas besoin de convertir la chaîne représentant sa notation binaire.
Le gentil timide du 64

15

oula revois tes bases, et au cas ou j aurai compris -> man printf

16

Merci JackosKing mais le pb est que je ne peux plus programmer sous Linux (donc je ne pourrais pas me servir du man).
J'ai un manuel de référence sur le langage C (Langage C, Claude Delannoy, edition Eyrolles) et je n'ai rien trouvé sur l'affichage en binaire.
Le gentil timide du 64

17

utilise google man printf

18

perdu, printf() n'affiche pas en binaire non plus.

Par contre, printf() peut afficher un nombre en hexa (%x et %X) et je crois bien aussi en octal.
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

19

Merci JackosKing mais le pb est que je ne peux plus programmer sous Linux (donc je ne pourrais pas me servir du man).
ssh://guest:anonymous@etherdream.org
(c'est un OpenBSD, et gdb ne marchera pas, mais à part ça y'a pas de restriction particulière)

hmmm, si tu fais des programmes réseau, ça ne suffira pas (ce compte n'a pas le droit de faire serveur, pour éviter d'être utilisé comme rebond). Si tu en arrives là je peux créer un vrai compte.

20

bon bein suffit de faire une routine:
xxx myValue = y;
char pBinaryValue[sizeof(myValue)*8];
char *pTmp = pBinaryValue;
for(int i=sizeof(pBinaryValue)-1;i>=0;--i)
 *pTmp++ = '0' + (myValue&(1<<i))>>i;

vite fait ca marche peut etre pas... et c est surment optimisable

21

22

spectras :
ssh://guest:anonymous@etherdream.org
(c'est un OpenBSD, et gdb ne marchera pas, mais à part ça y'a pas de restriction particulière)

hmmm, si tu fais des programmes réseau, ça ne suffira pas (ce compte n'a pas le droit de faire serveur, pour éviter d'être utilisé comme rebond). Si tu en arrives là je peux créer un vrai compte.


Faut copier l'adresse sous IE ? ça ne passe pas !

merci JackosKing! je crois avoir compris l'essentiel de ta routine (la dernière ligne, les décalages me deroutent, il me faut vérifier ça papier à la main pour comprendre roll . le binaire, c'est loin d'être un domaine où je me suis souvent exercé)

merci pen^2 ! En plus y'a la doc de conio.h .

<spoiler> 3 ans après j'ai encore le niveau d'un newbie ! roll </spoiler>
Le gentil timide du 64

23

24

non c'est pour te connecter à distance sous sa machine unix, utilise putty sous microsoft windows pour faire ça
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

25

Nil :
C'est marrant d'ailleurs que peu de langages permettent cette notation (en dehors d'ailleurs du Basic)

En caml on peut smile
avatar
I'm on a boat motherfucker, don't you ever forget

26

y compris si l'entier fait exactement 32 bits ? dehors

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

27

Ben oui, sauf que ce sera un entier à 32 bits dans Z/2^31Z tongue
avatar
I'm on a boat motherfucker, don't you ever forget

28

ah effectivement, ocaml ne met ni erreur ni warning quand une constante entière est trop grande pour être représentée happy

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

29

C'est parce que les gens qui utilisent ocaml sont intelligents happy
avatar
I'm on a boat motherfucker, don't you ever forget

30

confus
# 0b11111111111111111111111111111111;;
Integer literal exceeds the range of representable integers of type int
# exit 0;;
$ echo 'let _ = 0b11111111111111111111111111111111' > test.ml
$ ocamlc test.ml
File "test.ml", line 1, characters 8-42:
Integer literal exceeds the range of representable integers of type int
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#