Advertisement
dusanrs

konverzije

Apr 28th, 2022
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.64 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define LEN 10
  5.  
  6. char* intBinToString(int x);
  7. int stringBinToInt(char* s);
  8.  
  9. int lengthBin(int x);
  10. char* intBinToString1(int x);
  11. int stringBinToInt1(char* s);
  12.  
  13. int main()
  14. {
  15.     int broj, x;
  16.     char *s=NULL;
  17.  
  18.     printf("Broj: ");
  19.     scanf("%d",&broj);
  20.  
  21.     s = intBinToString(broj);
  22.     printf("Binarni zapis broja: %s",s);
  23.  
  24.     x = stringBinToInt(s);
  25.     printf("\nx = %d",x);
  26.  
  27.     s = intBinToString1(broj);
  28.     printf("\n\nBinarni zapis broja: %s",s);
  29.  
  30.     x = stringBinToInt1(s);
  31.     printf("\n\nx = %d",x);
  32.  
  33.  
  34.     return 0;
  35. }
  36.  
  37. char* intBinToString(int x)
  38. {
  39.     char* s = (char* )malloc(LEN * sizeof(char));
  40.     char *poc = s, *kraj=s, temp;
  41.  
  42.     while(x){
  43.         if(x%2) *kraj='1';
  44.         else *kraj='0';
  45.  
  46.         kraj++;
  47.         x/=2;
  48.     }
  49.     *kraj=NULL;
  50.  
  51.     kraj--;
  52.     while(kraj>poc){
  53.         temp=*kraj;
  54.         *kraj=*poc;
  55.         *poc=temp;
  56.  
  57.         kraj--;
  58.         poc++;
  59.     }
  60.  
  61.     return s;
  62. }
  63.  
  64. int stringBinToInt(char* s)
  65. {
  66.     int broj=0;
  67.  
  68.     while(*s){
  69.         broj=2*broj+(*s-'0');
  70.         s++;
  71.     }
  72.  
  73.     return broj;
  74. }
  75.  
  76. int lengthBin(int x)
  77. {
  78.     int br=0;
  79.  
  80.     while(x){
  81.         br++;
  82.         x>>=1;
  83.     }
  84.  
  85.     return br;
  86. }
  87.  
  88. char* intBinToString1(int x)
  89. {
  90.     char* s = (char* )malloc(LEN * sizeof(char));
  91.     char* poc = s;
  92.     int len = lengthBin(x), i;
  93.  
  94.     for(i=len;i>=0;i--){
  95.         *poc = ((x & (1<<i))>>i)+'0';
  96.         poc++;
  97.     }
  98.     *poc=NULL;
  99.  
  100.     return s;
  101. }
  102.  
  103. int stringBinToInt1(char* s)
  104. {
  105.     int x=0;
  106.  
  107.     while(*s){
  108.         x<<=1;
  109.         x|=(*s-'0');
  110.         s++;
  111.     }
  112.  
  113.     return x;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement