С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/718: Рейтинг темы: голосов - 718, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 16

Перевод из двоичной системы в десятичную

12.01.2012, 16:30. Показов 146651. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать программу для перевода из двоичной системы в десятичную ...не понимаю как ,надо завтра уже отдавать(
Мне сказали там что-то путем преобразования в int только не понял как..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2012, 16:30
Ответы с готовыми решениями:

Перевод из двоичной системы в десятичную
Помогите пожалуйста сделать обратную функции перевода, из двоичной в десятичную, добавив в часть кода. Очень надо :umbrage: #include...

Перевод из двоичной системы в десятичную
#include <iostream> #define rozmiar 32 using namespace std; char* funkcja(int liczba) { char* tab = new char{};

Перевод чисел из двоичной системы в десятичную
#include <stdio.h> #include <math.h> int main() { int j,i,decimal; char c; decimal=0; printf("Input binary number...

33
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
12.01.2012, 16:45
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от nexxezz Посмотреть сообщение
Помогите написать программу для перевода из двоичной системы в десятичную ...не понимаю как ,надо завтра уже отдавать(
Мне сказали там что-то путем преобразования в int только не понял как..
C
1
2
3
4
5
6
int n, sum=0; // n - количество бит, sum это наше десятичное число которое получится из двоичного
char ch[n];//  это наше двоичное число. число символов рано n из предыдущей строки
 
for (i=n-1;i>-1;i--)//    пошли по строке бит
   if (ch[i]=='1')   // если i-й бит в строке = 1 ,
   sum+=pow(2,i) ;// то прибавить к общей сумме 2 в степени i
Какой уровень по знания языка ? сами допишете?
1
31 / 31 / 16
Регистрация: 30.11.2010
Сообщений: 81
12.01.2012, 16:49
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

как-то так...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <bitset>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    string bin;
    cout << "Enter binary number (max 32 digits): ";
    cin >> bin;
    cout << "The number translated to decimal is " << bitset<32>(bin).to_ulong() << endl;
    return 0;
}
1
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 16
12.01.2012, 16:49  [ТС]
Ну эмм "очень начинающий "чтоли...сейчас попробую разобраться как дальше делать
Спасибо большое!!
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
12.01.2012, 16:57
C++
1
2
3
4
5
6
7
8
9
10
 const int n=100;
 int sum=0;
 char ch[n];
 pow2=1;
 for (i=n-1;i>-1;i--)
 {
      if (ch[i]=='1')  
            sum+=pow2;
      pow2*=2;
 }
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
12.01.2012, 16:57
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от nexxezz Посмотреть сообщение
Мне сказали там что-то путем преобразования в int только не понял как..
может это?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
void dec_to_bin (int x)
{
   if ( x )
   {
      dec_to_bin (x >> 1); 
      std::cout << (x & 1);
   }
}   
 
int main ()
{
   int x = 8;
   
   std::cout << "Bin = ";
   dec_to_bin (x);
   std::cout << " Dec = " << x << std::endl;
   return 0;
}
http://liveworkspace.org/code/... 17952b1c3b
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 16
12.01.2012, 17:20  [ТС]
CJS, так и не понял как доделывать((
0
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
12.01.2012, 17:29
nexxezz, все-таки думаю вам стоило бы поразбираться, хотя бы чтобы в общем виде ориентироваться. здесь нет ничего трудного(в этой программе).

Советую книгу авторов Керниган и Ритчи "Язык программирования Си". Там по названию подглав Вы найдете то, что Вас интересует. Много времени не займет(думаю через часик Вы всплеснете руками), так зато Вы будете понимать.

Единственное что хочется заметить:

C
1
2
3
4
5
scanf("%s", str); //позволит ввести строку состоящую из 0 и 1,заданной длины(не переборщите) 
printf("%d",sum);// это выводит на дисплей искомое число
 
getch();// это задержит на дисплее результат, чтобы не пропадал после прогона проги
<conio.h>// это надо вначале(вверху), чтобы работала getch ();
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
12.01.2012, 17:32
Лучший ответ Сообщение было отмечено как решение

Решение

zss2,
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
 
int main (void)
{
   char s[] = "0100 0x6fffff";
   char *end;
   long a = strtol (s, &end, 2);
   long b = strtol (end, &end, 0);
   printf ("%ld %ld \n", a, b);
   return 0;
}
http://liveworkspace.org/code/... 62faa7200f
3
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
12.01.2012, 18:03
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<math.h>
#include<conio.h>
 
void main()
{
 
int n=8, sum=0 , i; // n - количество бит, sum это наше десятичное число которое получится из двоичного
char ch[]="00001111";//  это наше двоичное число. число символов рано n из предыдущей строки
// будете менять двоичное число, меняйте и n , которое сейчас равно 8     
 
for (i=n-1;i>-1;i--)//    пошли по строке бит
   if (ch[i]=='1')    sum+=pow(2,n-(i+1)) ;// то прибавить к общей сумме 2 в степени i
 
printf("\n%d",sum);
getch();
 
}
то , что стоит после // считается комментарием - можно полностью убрать.
Ну а так думаю разберетесь по книге. ведь препод же будет все равно спрашивать.
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
12.01.2012, 19:53
Функция pow() возводит действительное число в действительную степень,
а тут всего-то надо умножить на 2. Поэтому я и предложил оператор
pow2*=2;
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
12.01.2012, 23:07
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
long bin_to_dec (char *s)
{
   short i;
   long res = 0;
   
   for ( i = 0 ; i < sizeof (long) * 8 && s[i] ; ++i )
   {
      res <<= 1;
      res |= (s[i] - '0');
   }
   return res;
}
 
int main (void)
{
   char s[] = "0101";
   
   printf ("Bin = %s Dec = %ld\n", s, bin_to_dec (s) );
   return 0;
}
http://liveworkspace.org/code/... d1c58f2052


CJS, вот хороший вариант (когда strtol нельзя), но не предусмотрено, что в строке может быть не двоичное число
0
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
27.09.2016, 23:45
Прошу проверить, похоже ли на правду.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main(void)
{
    int counter = 1,  timeless ;
    long int number, decimal = 0;
 
 
    printf("Input a number in binary arithmetic : ");
    scanf_s("%d", &number);
    while (number!=0)
    {    
        timeless = number % 10*counter;
        decimal = decimal + timeless;
        number = number/10;
        counter*=2;
    }
   printf("Now it was converted into decimal numerical system : %d.\n", decimal);
   return(0);
}
0
81 / 81 / 33
Регистрация: 03.03.2013
Сообщений: 311
28.09.2016, 00:54
Notoriously, для положительных чисел - похоже на правду
1
0 / 0 / 0
Регистрация: 21.11.2018
Сообщений: 37
06.02.2019, 13:49
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 <stdio.h>
#include <string.h>
 
 
int main()
{
 
    char bin[64];
 
    int i;
    int res = 0;
 
    scanf("%s", bin);
    
    for(i = 0; i < strlen(bin); i++)
        {
            res += (bin[i]=='1') ? 1 << (strlen(bin) - i -1):0;
 
        }
 
        printf("%lu", res);
    
    return 0;
}
0
 Аватар для D3m1an
296 / 227 / 102
Регистрация: 11.08.2016
Сообщений: 780
06.02.2019, 15:07

Не по теме:

вот понесло то как , прорвало , душа требует поделиться этим кодом со всем миром

0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
06.02.2019, 15:24

Не по теме:

Хеловорлд детектед!


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(void) {
    char bin[65];
 
    while ( printf("bin > ") && scanf("%64[01]%*c", bin) == 1 ) {
        char * ptr = bin;
        unsigned dec = 0;
        
        for ( ; *ptr; ++ptr )
            dec = ( dec << 1 ) | ( *ptr - '0' );
        
        printf("dec > %u\n", dec);
    }
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 25.02.2024
Сообщений: 8
25.02.2024, 19:31
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* Программа переводит число из двоичной системы в десятичную */
 
#include <stdio.h>
 
int main(int argc, char *argv[]){
    int x, y = 1, result = 0;
 
    printf("Enter the number: ");
    scanf("%d", &x);
    
    for (int i = 0; i < 8; i++){
        if (x % 10 == 1) result = result + (x % 10) * y; /* Каждый раз проверяется последний бит */
        x /= 10; /* Двоичное число уменьшается в 10 раз, чтобы проверить следующий бит */
        y *= 2; 
    }
    
    printf("Result = %d\n", result);
 
    return 0;
}
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
25.02.2024, 21:02
Цитата Сообщение от Muslim_Umalatov Посмотреть сообщение
C
1
2
3
4
    int x
    ...
    printf("Enter the number: ");
    scanf("%d", &x);
И снова эта необъяснимая загадочная манера вводить/выводить двоичные числа как десятичные числа из 0 и 1. Кто-то где-то преподает подобную чушь...

Цитата Сообщение от Muslim_Umalatov Посмотреть сообщение
x /= 10; /* Двоичное число уменьшается в 10 раз, чтобы проверить следующий бит */
Ну ну...

P.S. Начинающим: никогда так не делайте.
2
0 / 0 / 0
Регистрация: 25.02.2024
Сообщений: 8
25.02.2024, 21:33
Извините, я хотел помочь только. Я не знаю как это можно написать по-другому? Там есть функция какая-то что ли?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.02.2024, 21:33
Помогаю со студенческими работами здесь

Перевод числа из двоичной системы счисления в десятичную
Вот пример : void main(void) { unsigned char data = 10000000; unsigned char data2= 00000010; unsigned char PORTA; ...

Перевод из десятичной(двоичной) системы счисления в двоичную(десятичную)
Всем добрый день, кто может помочь как можно реализовать данную задачу на С? Уже долго мучаюсь с ней, никак не получается (заранее...

Перевод числа из двоичной в десятичную с.с.
Дана задача: Задано неотрицательное целое число в двоичной системе счисления. Требуется перевести его в десятичную. Ввод В...

Перевод из двоичной в двоично-десятичную СС
Помогите пожалуйста написать программу для перевода чисел из двоичной системы в двоично-десятичную систему счисления.Пытаюсь уже,и ничего...

Перевод чисел с двоичной в десятичную
Вот кусочек из моего кода, с которым мне нужна помощь. Программа переводит из двоичной системы в десятичную. Мне нужно преподавателю...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru