Facebook
From Insensitive Kangaroo, 5 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 252
  1. #include <iostream>
  2. #include <climits>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. string DecToBin(int);
  7. unsigned short BinToDec(string);
  8. int main(int argc, const char * argv[]) {
  9.     unsigned short max = USHRT_MAX; //zwraca maksymalna wartosc jaka moze przechowac typ danych unsigned short (bitowo 16x 1)
  10.     unsigned short input;
  11.     cout<<"Podaj liczbe: ";
  12.     cin>>input;
  13.     string bin = DecToBin(input); //konwersja inputu na bitowke - do pierwszej jedynki!
  14.     int diff = 16-bin.length(); //roznica miedzy 16 znakami a iloscia znakow w przekonwertowanej na bin liczbie
  15.     string wholeBin="";
  16.     for (int i = 0; i<diff; i++){
  17.         wholeBin+="0";//dorzuca tyle zer zeby bylo 16 (zawsze na poczatku)
  18.     }
  19.     wholeBin+=bin;//podmianka zeby bylo w wyliczonym formacie 0000 0000 0000 0000
  20.     cout<<"Binarnie:\t"<<wholeBin<<endl;
  21.  
  22.     string result;
  23.     for (int i = wholeBin.length()-1; i>=0; i--){
  24.         result+=wholeBin[i]; //robi odwrotnego stringa - zwroc uwage ze for robi i-- wiec lecimy od konca a wartosci wpisujemy na poczatek
  25.     }
  26.     cout<<"Reverse:\t"<<result<<endl; //odwrocony bin
  27.     cout<<"Reverse decimal: "<<BinToDec(result); //rev bin skonwertowany na decimala, wsio
  28. }
  29.  
  30. string DecToBin(int number)
  31. {
  32.     if ( number == 0 ) return "0";
  33.     if ( number == 1 ) return "1";
  34.  
  35.     if ( number % 2 == 0 )
  36.         return DecToBin(number / 2) + "0";
  37.     else
  38.         return DecToBin(number / 2) + "1";
  39. }
  40.  
  41. unsigned short BinToDec(string binary){
  42.     unsigned short result=0;
  43.     int index=0;
  44.     for (int i = binary.length()-1; i>=0; i--){
  45.         if (binary[i]!='0'){
  46.             result+=pow(2,index);
  47.         }
  48.         index++;
  49.     }
  50.     return result;
  51. }