 |  | toujour du c++ Section : Informatique Logiciels et materiel PC | toujour du c++ : Discussion sur le forum Informatique (Logiciels et materiel PC : Informations et discussions sur les ordinateurs, les logiciels ou le materiel pc, la programmation et le high tech en général.)  | Toujour du c++ Informatique : Logiciels et materiel PC |
|
03/06/2004, 18h17 | #1 | | Ombre
| toujour du c++ | | Alors voila il y a pas si longtemps g fait un convertisseur de nombre entier en binaire dont voila le code .
Code:
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define MAX 40
int t[MAX];
int val,i;
int main()
{
int cont = 'o';
while (cont == 'o')
{
cout<<"Entrer un nombres\n";
i = 0;
cin>>val;
while (val != 0)
{
t[i] = val % 2;
val = val / 2 ;
i++;
}
cout<<"\nVotre valeur donne en binaire : \n";
while ( i != 0)
{
i--;
cout<<t[i];
}
cout<<"\n\nVoulez vous recomencer (o/n)\n";
cont = getche();
break ;
}
cout<<"\n\n";
system("PAUSE");
} |
Et je voulais savoir comment ont pourait faire pour traduire les lettres en binaire .
les chiffres en hexa ?????? | | |
03/06/2004, 19h25 | #2 | | Séraphin
| Re : toujour du c++ | | Pour traduire une lettre en binaire, il suffit de faire la même chose que ce que tu as fait avec les nombres.
Une lettre est un char, c'est à dire une variable codée sur un octet vaut entre 0 et 255. Tu peux donc considérer une telle lettre comme un nombre. Il y a toutefois une variante. Certaines lettres sont codées sur 2 octets (65536 lettres différentes) lorsque les caractères spéciaux comme ceux qu'on trouve en japonais sont gérés.
Le premier cas traite donc de l'ASCII étendu (8 bits), le second de l'UNICODE (16 bits). Donc selon le type de caractère que tu traites, tu as un nombre entre 0 et 255 ou entre 0 et 65535. Reste à faire les divisions par deux.
Remarque : une divison par deux n'est pas optimisée. Il existe un opérateur binaire te décalant les bits de ton nombre. Exemple '>>' te décale tes bits vers la droite, '<<' vers la gauche. Du coup, ça revient à faire une division par deux (décalage vers la droite) ou une multiplication par deux (décalage vers la gauche).
En ce qui concerne l'hexadécimal, les nombres vont entre 0 et 1F (c'est à dire 15). Donc là ou tu as 2 possibilités en binaires (0 ou 1), tu en as 16 en hexadécimal. Pour retrouver ton codage hexadécimal il te suffit de diviser par 16 au lieu de deux (ou 4 décalages binaires). Il y a toutefois une difficulté supplémentaire : 15 n'est pas codé par 15 mais par 1F, 14 par 1E, 13 par 1D, etc. A toi de faire la correspondance si tu veux un affichage.
J'espère que tout ça t'aidera. Bonne continuation dans ton apprentissage. Dernière modification par Amiral : 04/06/2004 à 01h49. Motif: Correction de NeoSadness | | |
03/06/2004, 21h10 | #3 | | Ombre
| Re : toujour du c++ | | | | | | Une lettre est un char, c'est à dire une variable codée sur un octet vaut entre 0 et 257.
Certaines lettres sont codées sur 2 octets (65536 lettres différentes) lorsque les caractères spéciaux comme ceux qu'on trouve en japonais sont gérés.
...tu as un nombre entre 0 et 256 ou entre 0 et 65535. Reste à faire les divisions par deux. | |  | |  |
|
Juste une ou deux corrections
un variable codée sur un octet ou un byte (8bits) vaut entre 0 et 255 et non 257
certaines lettres sont codées sur 2 octets >> il y a aussi les touches étendues genre F1
...tu as un nombre entre 0 et 255
vila  | | |
04/06/2004, 23h33 | #7 | | Ombre
| Re : toujour du c++ | | Correction également
1F = 31 en décimal = 11111 en binaire
F = 15 en décimal = 1111 en binaire
Pas la même chose  | | |
07/06/2004, 02h50 | #10 | | Séraphin
| Re : toujour du c++ | | pour l'hexadécimal j'ai fait une erreur. tu comptes 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11...
en fait c'est ce que j'ai mis à la différence qu'après 09 je mettais 1A... bref, c'est ce qu'il y a dans ce post là, mais ça ne change rien au principe. | | |
07/06/2004, 07h23 | #11 | | Ombre
| Re : toujour du c++ | | t'es pas obligé de mettre le 0
0-1-2-3-4-5-6-7-8-9-a-b-c-d-e-f-10-11-12-13-14-15-16-17-18-19-1a....
c bon aussi  | | |
07/06/2004, 20h13 | #14 | | Ombre
| Re : toujour du c++ | | Je viens de survoler le code, bin vi fallait bien
Heu, si tu sors déjà autant de librairies pour 10lignes de codes qu'est ce que ça va être après. Donc je ne pense pas me tromper en te disant qu'avec ton stdio.h t'as assez.
Puis 2variables globales c'est PO BIEN! T'as pas de besoin de variables globales pour un truc pareil  .
EDIT: puis t'as un 'break' qui te sert à? je connais pas le C++, mais je pense que ton break sert à rien non? à part 'casser' un switch que tu n'as pas.
Donc je me dis qu'il est là pour ta boucle While, mais je ne vois tjs pas pq lol
EDIT2: un fflush(sdtin) ne tue personne  Dernière modification par Neosadness : 07/06/2004 à 20h22. | | |
Emplacement : | Utilisateurs regardant cette discussion : 0 ( membre(s) et 0 invité(s)) | | | | Rechercher dans cette discussion | | |
Fuseau horaire GMT +1. Il est actuellement 20h26. |
| |  |