Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jorgediazbass en 29 Julio 2016, 07:44 am



Título: decimal a binario con bitset
Publicado por: jorgediazbass en 29 Julio 2016, 07:44 am
me encontraba viendo que existen métodos de convertir de decimal a binario mediante recursividad y otros, pero revisando tanto las librerías pensé que debería existir algo que trabajara a bajo nivel y conseguí la librería bitset, tiene una serie de métodos interesantes y que resultaran muy útiles, este code es solo un ejemplo básico, se que podría adaptar para poder manejar double.
Código
  1. /*
  2. Name: decimal a binario menores o iguales a 32bits
  3. Copyright: jorge diaz
  4. Author: jorge diaz
  5. Date: 29/07/16 01:20
  6. Description: se puede mejorar, por ahora solo pruebo los recursos de la librería
  7. */
  8.  
  9. #include <bitset>
  10. int main()
  11. {
  12. std::bitset <0x20> _;
  13. scanf("%d",&_);
  14. std::string __ = _.to_string();
  15. const char *p=__.c_str();
  16. for(register short _=0x0;_<=0x20;_++)
  17. {
  18. if(_%0x4==0x0)
  19. {
  20. printf(" ");
  21. }
  22. printf("%c",*p);
  23. *p++;
  24. }
  25. return 0;
  26. }
  27.  


Título: Re: decimal a binario con bitset
Publicado por: AlbertoBSD en 30 Julio 2016, 23:52 pm
Se puede trabajar a mas bajo nivel usando operadores de bits.

Código
  1. char *binario(unsigned int n){
  2.  static char b[33];
  3.  int i =0;
  4.  do{
  5.     b[i++] (n &1 ) ? '1' : '0';
  6.     n = n>>1;
  7.  }while(n);
  8.  b[i] = '\0';
  9.  return b;
  10. }


Título: Re: decimal a binario con bitset
Publicado por: ivancea96 en 31 Julio 2016, 01:57 am
Código
  1. std::bitset <0x20> _;
  2. scanf("%d",&_);
  3.  

Y bueno, ten en cuenta que es una clase. Funciona, sí, pero no es la forma de asignarle valores. Tiene un constructor al que le puedes enviar el valor inicial.


Título: Re: decimal a binario con bitset
Publicado por: jorgediazbass en 31 Julio 2016, 21:06 pm
Y bueno, ten en cuenta que es una clase. Funciona, sí, pero no es la forma de asignarle valores. Tiene un constructor al que le puedes enviar el valor inicial.

cual seria el constructor? xq tengo entendido que se llaman igual que clase osea seria algo asi?
Código
  1. bitset.bitset(argumento);


Título: Re: decimal a binario con bitset
Publicado por: ivancea96 en 31 Julio 2016, 21:55 pm
Código
  1. std::bitset b(valor);
http://www.cplusplus.com/reference/bitset/bitset/bitset/ (http://www.cplusplus.com/reference/bitset/bitset/bitset/)