title: Converting a negative decimal into binary in C
body: <p>I'm currently working on a program that (among others) has to convert a decimal number into binary, octal &amp; hexadecimal.
  This already works with this code:</p>
  
  <pre><code>    int e = 0;
      }
          while(i != 0){
              str[e] = (i%b) + '0';
              i = i / b;
              if(str[e] &gt; '9'){
                  str[e] = str[e] + 7;
              }
              e++;
  
      }
      if(vorzeichen == -1){
          str[e] = '1';
          e++;
      }
      if(b == 16){
          str[e] = 'x';
          str[e+1] = '0';
      }
      else if(b == 8){
          str[e] = '0';
      }
  }
  </code></pre>
  
  <p>b is the base (2 for binary, 8 for octal &amp; 16 for hexa) and i is the number that i want to convert. 
  This gives out a string of characters which i then reverse to get the correct number. Now if i try this with negative numbers, it gives out strings not only containing 0 and 1 but also /, which is '0' -1 on the ASCII table. For octal and decimal it also gives out characters below the '/' on the ASCII table. I've attempted different possible solutions but none seemed to give the desired result. What I read on the internet is that I have to use the 2s Complement I'm stuck trying to use it. It just doesn't seem to work for me. </p>