Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/27: Рейтинг темы: голосов - 27, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 24.06.2012
Сообщений: 64

Разработать алгоритм перевода двоичных чисел в десятичные числа

02.07.2012, 23:43. Показов 5405. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
разработать алгоритм перевода двоичных чисел в десятичные числа
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.07.2012, 23:43
Ответы с готовыми решениями:

Перевести массив двоичных чисел в десятичные
Помогите пожалуйста на языке С++: Дан массив типа char, состоящий из N элементов (Nmax=1000). Двоичное число поэлементно записано в массив....

Дан массив упорядоченных по возрастанию целых чисел. разработать алгоритм бинарного поиска заданного числа, результат номер искомого числа или 0 если
помогите решить задачу: Дан массив упорядоченных по возрастанию целых чисел. разработать алгоритм бинарного поиска заданного числа,...

Нужно написать программу перевода двоичных цифр в их шестнадцатиричный эквивалент (перевод числа оформить в виде функции)
как написать эту программу в C++

8
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
03.07.2012, 00:27
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <cstdio>
 
bool bin2dec (const char* bin, unsigned& dec) {
  if (!bin) return false;
  unsigned bin_pow = 1;
  char sym; 
  dec = 0;
  for ( ; (sym = *bin) != '\0' ; ++bin) {
    bin_pow *= 2;
    switch (sym) {
      case '0': break;
      case '1': dec += bin_pow; break;
      default:  return false;
    }
  }
  return true;
}
 
int main() {
  unsigned res = 0;
  if (bin2dec("11010", res)) {
     printf ("%d\n", res);
  }
}
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
03.07.2012, 09:48

Не по теме:

alex_x_x, предположу что на линуксе или на чём разрабатывался код выше идёт порядок байт отличен от NT-ного.
http://codepad.org/nKq1eflh
"11010" == 26 а не 22 как подано в коде выше



green_apple, вот код для NT
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main()
{
    char bin[256] = {0};
    cout<<"bin : ";
    cin>>bin;
    int len = strlen(bin);//óçíà¸ì äèëííó ñòðîêè
    int pwr = 1;
    int dec = 0;
    for(int i = 0; i < len; i++)
    {
        dec += pwr*(bin[(len - 1) - i] - '0');
        pwr *= 2;
    }
    cout<<"dec : "<<dec<<endl;
    system("pause");
    return 0;
}
Миниатюры
Разработать алгоритм перевода двоичных чисел в десятичные числа  
1
03.07.2012, 11:54

Не по теме:

-=ЮрА=-, да нет, естесственно форма в линуксе точно такая же)
совсем по-детски лоханулся=)

1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
03.07.2012, 15:00
green_apple,
s=0
цикл 0-n
s=s+Ai*2^i
a0*2^0+a1*2^1+a3*2^3+.....
s=an
цикл
s=s*2+a(n-1)
У меня в программе тоже самое, только вместо 2^n у меня идёт
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
pwr
а само значение бита равно
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
(bin[(len - 1) - i] - '0');
Смотри если bin[(len - 1) - i] == '1' то int('1') = 49 если же ноль то int('0') == 48 получается
либо 49 - int('0') либо 48 - int('0') что соответсвует 1 или 0 в int
Вобщем у меня абсолютно твоя же логика просто pwr можно заменить на pow(2,i) а разницу char-ов как
C++
1
2
if(bin[(len - 1) - i] == '1') 
   dec += 1*pow(2,i);
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
10.07.2012, 23:54
Ниже перевод вещественной чисел (по той схеме о которой ты попросил)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
using namespace std;
 
//функция переводит двоичное число заданное строкой str в 
//десятичное, флаг ipart указывает : 
//ИСТИНА - передана строка с целой частью
//ЛОЖЬ   - передана строка с дробной частью
double bin2dec(char * str, bool ipart);
 
int main()
{
    char ipart[256] = {0};//Будет содержать целую часть числа
    char fpart[256] = {0};//Будет содержать дробную часть числа
    cout<<"Enter binary : ";cin>>ipart;
    char * ptr = strchr(ipart,'.');//Ищем разделитель дробной части в числе
    if(ptr != NULL)
    {
        ipart[strlen(ipart) - strlen(ptr)] = '\0';//Обрезаем строку по запятую
        strcpy(fpart, ptr + 1);//Сдвигаемся в строке исключая из неё запятую
    }
    //Десятичное число
    double val = 0;
    val += bin2dec(ipart, true);//Преобразуем целую часть в десятичное
    val += bin2dec(fpart, false);//Если есть преобразуем дробную часть в десятичное
    cout<<"Decimal value : "<<val<<endl;
    system("pause");
    return 0;
}
 
double bin2dec(char * str, bool ipart)
{
    int i;
    int bit    = 0;//Значение бита
    int sLen   = 0;
    int pwr    = 1;
    double val = 0;
    if(str != NULL)//Если строка не пуста
    {
        sLen = strlen(str);//Узнаём разрядность числа
        for(i = 0; i < sLen; i++)
        {
            bit = 0;
            if(str[(sLen - 1) - i] == '1')
                bit = 1;
            if(ipart)
                val += bit*pwr;
            else
            if(bit == 1)//Исключаем деление на ноль
                val += 1.0/(bit*pwr);
            pwr = pwr*2;
        }
    }
    return val;
}
Миниатюры
Разработать алгоритм перевода двоичных чисел в десятичные числа  
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
11.07.2012, 00:11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
unsigned int B2D(char *bin)
{
        unsigned int val = 0;
        
        for(unsigned char i=0; i<strlen(bin); ++i)
        {
                val <<= 1;
                if(bin[i] == '1'){ val |= 0x1; continue; }
                if(bin[i] == '0') continue;
                return 0;
        }
        
        return val;
}
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
11.07.2012, 01:09
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstring>
using namespace std;
 
unsigned long long operator "" _b(const char* str)
{
   unsigned long long res = 0;   
   size_t size = strlen(str);
   for (size_t i = 0; i != size; ++i)
      res |= (str[i] - '0') << (size - i - 1);
   return res;
}
 
int main(void)
{
   cout << 1110011_b << endl;
   return 0;
}
http://liveworkspace.org/code/... 78b696035d
1
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
11.07.2012, 19:52
Можно перевести используя метод Горнера
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using namespace std;
 
int main()
{   
    int number = 1011011; // исходное двоичное число
    int st = 1;  
    int count = 0; // счётчик количества цифр 
    int dec = 0;   // десятичное
    int cop_number = number; // приравниваем число другой переменной чтобы узнать количество цифр
 
    while(cop_number) // считаем цифры
    { 
        cop_number /= 10; 
        count++; 
    }  
    for ( int i = 1; i < count; i++) 
        st = st * 10; // возводим в степень количества чисел
 
    while(number) // используем метод Горнера
    { 
        dec = dec * 2 + (number / st); // суммируем цифры слева направо, 
        //умножая ранее полученный результат 
        // на основу системы
        number = number % st; // следующая цифра
        st = st / 10;
    }
 
    cout << "Dec " <<  dec << endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.07.2012, 19:52
Помогаю со студенческими работами здесь

Разработать алгоритм перевода заданных английских слов на русский язык
Разработать алгоритм перевода в тексте заданных английских слов на русский язык. Ребят помогите пожалуйста!

Перевод дробных двоичных в десятичные
Доброго времени суток. У меня есть задание, сделать программу которая переводит двоичные числа в десятичные. Для целых чисел я написал, все...

Алгоритм перевода чисел
Помогите пожалуйста! Надо мне написать алгоритм перевода из десятичного числа в 16 ричное число! Через стандартные функции не катит,и...

Алгоритм перевода чисел
Парни,напишите пожалуйста програмный алгоритм перевода чисел из 10 ричной системы счисления в 16 ричную систему. Очень надо.

Реализовать алгоритм умножения двоичных чисел со сдвигом суммы частичного произведения вправо
Создать алгоритм умножения чисел с анализом двухразрядных множителей со сдвигом суммы частичного произведения вправо. Заранее спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru