Guest User

Untitled

a guest
Jan 12th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. void fromDecToBin(char *dec, char* bin, int nbits)
  2. {
  3.  
  4. /* CONVERSION TABLEAU AVEC UN NB DECIMAL A UN NB BINAIRE */
  5. int p = strlen(dec);
  6. int deci = 0;
  7. int i,j;
  8. char bintemp[17];
  9.  
  10. if(dec[0] == '-')
  11. {
  12. printf("Valeur decimale negative detectee...");
  13. i=1;
  14. }
  15.  
  16. else
  17. {
  18.  
  19. i=0;
  20. }
  21.  
  22.  
  23. for(i; i <p; i++)
  24. {
  25.  
  26. deci += puiss(10,p-i-1)*(dec[i]-48);
  27.  
  28.  
  29. }
  30.  
  31. if(dec[0] == '-')
  32. printf("Valeur decimale non signee à convertir : -%d ...",deci);
  33. else
  34. printf("Valeur decimale non signee à convertir : %d ...",deci);
  35.  
  36. /*On obtient la valeur decimale en int */
  37. i = 0;
  38.  
  39. /*On obtient le tableau de binaire, a l'envers via les divisions euclidiennes succesives*/
  40. while(deci != 0)
  41. {
  42.  
  43. bintemp[i] = deci%2+48;
  44. deci = deci/2;
  45. i++;
  46.  
  47. }
  48.  
  49. /*Selon le nb de bits voulus, on rajoute des zéros*/
  50. while(i < nbits)
  51. {
  52. bintemp[i] = '0';
  53. i++;
  54. }
  55. /* Rajout du complement a 2 si besoin */
  56. if(dec[0] == '-')
  57. bintemp[i-1] = '1';
  58.  
  59. j = 0;
  60. /*On le remet a l'endroit */
  61. while(j<i)
  62. {
  63.  
  64. bin[j] = bintemp[i-1-j];
  65. j++;
  66.  
  67.  
  68.  
  69. }
  70. bin[j] = '\0';
  71. bintemp[0] = '\0';
  72.  
  73. printf(" Sur %d bits = %s\n\n",strlen(bin),bin);
  74.  
  75.  
  76.  
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment