Zamiana liczb binarnych na dziesietne

Zamiana liczb binarnych na dziesietne
K5
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tutaj,obok
  • Postów: 759
0

Witam

Czy w standardzie języka C/C++ jest funkcja zamieniającą liczbę binarna na dziesiętna ?

EDIT:

Czy w standardzie języka c++ 11 jest biblioteka posiadająca funkcje, która ciąg znaków np: 10111011100100011100101001110010010010 zamieni w ciąg znaków np: 123456789?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Nie do końca rozumiem pytanie. Gdzie chcesz tą liczbę niby mieć? Bo przecież wszystkie liczby w komputerze są trzymane binarnie i nie przeskoczysz tego bo masz tylko stan 0 lub 1 dla każdego bitu...

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12316
0

@Shalom - pytaczow ma na myśli pewnie funkcję konwertującą liczbę na ciąg znaków, bo inna konwersja jakoś sensu nie ma;

@kacper546 - zadawaj pytania sensowniej to ludzie nie będą się musieli domyślać.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
2

Tak.

  1. printf
  2. itoa
  3. ltoa
    oraz inne
K5
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tutaj,obok
  • Postów: 759
0

Zmieniłem pytanie na (chyba) bardziej zrozumiałe ...

EDIT:
To taki przykładowy (obrazowy) kod konwertujący.

Kopiuj
std::string binary = 1010011010; // to jest jakaś liczba w systemie dwójkowym
std::string decimal; // to ma być liczba wyżej, tylko w systemie dziesiętnym
decimal = BinToDecFunc(binary); 
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
char bin[]="10111011100100011100101001110010010010",*tmp=bin;
unsigned value=0;
while(*tmp) value=(value<<1)|(*(tmp++)&1);
SI
  • Rejestracja: dni
  • Ostatnio: dni
kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
4

Tak, nazywa się biblioteka standardowa.

Kopiuj
    bitset<11> b("10100111001");
    cout << b.to_ulong();
K5
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tutaj,obok
  • Postów: 759
0

Nie chciało mi się szukać to sam napisałem. Jak ktoś kiedyś będzie szukał to tu ma kod mojej funkcji.

Kopiuj
#include <string>
#include <math.h>

std::string BinToDecFunc(std::string binary)
{
    int number = 0;

    for(int x = 0; x < binary.length(); x++)
        if(binary[x] == '1')number += (pow( 2, (binary.length() - x - 1)));


    std::string decimal = to_string(number);

    return decimal;
}
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

A czemu nie zrobić tego po ludzku?

Kopiuj
unsigned number=0;
for(size_t i=0;i<binary.length();number|=1&binary[i++]) number<<=1;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.