Bis: Binaire en C

Résolu
fredleconte Messages postés 7 Date d'inscription lundi 15 mai 2006 Statut Membre Dernière intervention 16 octobre 2006 - 16 oct. 2006 à 22:43
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 15 oct. 2009 à 13:32
Réponse acceptée ! Mon problème n'est pas de convertir un nombre d'un base a l'autre mais de l'écrire comme en basic "%1010101" ou "%" désigne un nombre binaire. Le préfix pour un nombre hexadécimal en C est "0x" Quel est celui pour un nombre binaire? ( Dans mon source je veux travailler avec des bits et que je veux que ce soit lisible...) ( En Forth on change de base avec la commande BASE ) Merci d'avance et desolé si je ne me suis mal exprimé ( Et non l'hexadécimal n'est pas fait pour travailler avec des 1-bits mais avec des groupes de 4-bits)

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 oct. 2006 à 00:53
En ASM il y a la forme constante binaire, en C/C++ il y a décimal, octal ou hexa.

ciao...
BruNews, MVP VC++
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
16 oct. 2006 à 23:01
De l'ecrire ??? Mais de l'ecrire ou ???
Donne un cas concret d'utilisation parceque la je pense pas etre le seul a ne plus te suivre....
Si tu veux bosser sur des nombres binaires il existe en C/C++ les opérateurs '&', '|', mais aussi les '<<' et '>>'.
Ces deux derniers permettent de faire des décalages de bits respectivement vers la gauche et vers la droite.
Tu peux donc travailler sur des entiers tout en les utilisants au travers d'opérations binaires.

Quoi qu'il en soit un exemple de ce que tu veux faire ne serait pas de trop.

Shell
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
16 oct. 2006 à 23:40
Il me semble qu'on utilise un champ de bit apres, mais j'ai jamais eu besoin de ca:


struct bitfield

{

unsigned bit1 : 1;

unsigned bit2 : 1;

unsigned bit3 : 1;

unsigned bit4 : 1;

unsigned bit5 : 1;

unsigned bit6 : 1;

unsigned bit7 : 1;

unsigned bit8 : 1;

};


La structure occupe 1 octet en mémoire.


Pour plus de détail:

http://www.ann.jussieu.fr/courscpp/Sections/Sect06-G1.html
0
Davy974 Messages postés 9 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 mars 2010
15 oct. 2009 à 10:45
Gonna write a C function which do this !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Davy974 Messages postés 9 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 mars 2010
15 oct. 2009 à 10:59
string longtobin(unsigned int i)
{
string tmp = "";

int p = 0;

while (pow(2, p) <= i)
p++;

p--;

int t = 0;

while (p >= 0)
{
t = i / (int)(pow(2, p));
i -= (t * pow(2, p));

if (t == 1)
tmp += "1";
else
tmp += "0";

p--;
}

return ("%" + tmp);
}
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 oct. 2009 à 13:32
On ne réécrit pas ce qui existe pour faire au moins 10 fois plus lent, c'est le cas ici.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous