2010-09-01 15 views
0

J'essaye de faire un programme pour convertir un nombre en son binaire.comment stocker des nombres binaires plus grands en bitset (C++)

code:

#include<iostream> 
    #include<algorithm> 
    #include<bitset> 
    using namespace std; 
    int main() 
    { 
     int a; 
     string k; 
     bitset<CHAR_BIT> n; 
     cin>>a; 
     n=bitset<CHAR_BIT>(a); 
     cout<<n<<" "; 
      return 0; 
    } 

Le programme donne une mauvaise réponse pour 585, car il contient plus de 6 chiffres binaires. Comment puis-je de tels nombres plus grands?

+0

Quelle est la taille du plus grand nombre que vous souhaitez gérer? –

+0

@stephen a million – Vaibhav

+0

Ensuite, votre bitset doit avoir une largeur d'au moins 20 bits. –

Répondre

0

Un bitset a un nombre fixe de bits. Vous spécifiez bitset<CHAR_BIT> - sur la plupart des systèmes, CHAR_BIT est 8, donc vous aurez un bitet de 8 bits. Lorsque vous essayez d'insérer un plus grand nombre dans le bitset, les bits les plus significatifs sont supprimés.

Si vous connaissez à l'avance les plus grands numéros que vous aurez à traiter, vous pouvez spécifier par exemple bitset<16> ou bitset<32>. Si vous ne le faites pas, vous devrez peut-être utiliser some other datatype.

4

585 mod 256 = 73 (en supposant que CHAR_BIT est 8)
73 en base 2 = 0b01001001
The program does print 01001001 .
Je ne vois pas qu'il y a quelque chose qui cloche.

Si vous souhaitez stocker toute la gamme de a, le bitset doit être déclarée comme

bitset<CHAR_BIT * sizeof(a)> n (a);