Zamiana liczb binarnych na dziesietne

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?

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...

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ć.

2

Tak.

  1. printf
  2. itoa
  3. ltoa
    oraz inne
0

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

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

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); 
0
char bin[]="10111011100100011100101001110010010010",*tmp=bin;
unsigned value=0;
while(*tmp) value=(value<<1)|(*(tmp++)&1);
4

Tak, nazywa się biblioteka standardowa.

    bitset<11> b("10100111001");
    cout << b.to_ulong();
0

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

#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;
}
1

A czemu nie zrobić tego po ludzku?

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1