Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 163, средняя оценка - 4.74
Poul
#1

Перевод числа из двоичной в десятичную и наоборот. - C++

29.11.2008, 15:04. Просмотров 22353. Ответов 33
Метки нет (Все метки)

Помогите пожалуйста написать прогу перевода числа из двоичной системы счисления в десятичную и наоборот на языке "C".Я в этом програмировании не бум-бум.Курсовик нужно сдавать через неделю а у мя ещё и проги нет.Помогите кто может!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2008, 15:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод числа из двоичной в десятичную и наоборот. (C++):

Перевод числа из двоичной системы в десятичную или наоборот - C++
Нужно написать программу переводящую числа из двоичной в десятеричную систему счисления и наоборот. (Я пока что новенький искал чё-т не...

Перевод числа из двоичной системы в десятичную или наоборот - C++
Помогите написать прогу которая переводчит число из двоичной системы в десятичную или наоборот из десятичной в двоичную... Заранее...

Перевод числа из двоичной системы в десятичную - C++
Помогите написать программу для перевода из 2 в 10. Если число делится на 3, то вывести и результат деления

Перевод числа из двоичной сс в десятичную (рекурсия) - C++
Всем привет! Подкинули задачку тут: Разработать рекурсивную функцию, возвращающую значение. Для перевода числа из двоичной сс в...

Перевод вещественного числа из двоичной системы в десятичную c++ - C++
У меня есть число long double,например 15.375. я его перевёл в двоичную систему:010000000000001011110110000....00 Как перевести...

Перевод числа из двоичной в десятичную систему счисления на С++ - C++
Доброго всем дня! Мне необходимо перевести число из двоичной в десятичную с.с. с помощью рекурсии и только Вот что у меня...

33
Evg
Эксперт CАвтор FAQ
18248 / 6373 / 438
Регистрация: 30.03.2009
Сообщений: 17,643
Записей в блоге: 28
25.09.2009, 11:34 #16
accept, опять ты ничегоне понял. Ты мне говоришь про перевод "из двоичной системы", а вот фраза "в десятичную" - тут совершенно лишняя. Переводом в десятичную систему записи занимается процедура printf, а не твоя процедура bintodec
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.09.2009, 09:28 #17
Цитата Сообщение от Evg
Переводом в десятичную систему записи
ты имеешь в виду запись == строка ?
что типа число одно а строк много
тогда лучше уж писать функцию обратную к strtol, чтобы из числа переводила в любую систему счисления, то есть делала любую запись в пределах 2 36
а вот scanf она по-твоему что делает, из записи извлекает число ?
а число тогда в каком виде, в неопределённом ?
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.09.2009, 09:43 #18
тогда лучше уж писать функцию обратную к strtol, чтобы из числа переводила в любую систему счисления, то есть делала любую запись в пределах 2 36
Функция называет itoa(). В форуме есть код.

Добавлено через 7 минут
2accept:
1) Число. В языке программирования это
int a;
long a;
Само по себе число не имеет системы счисления !!!

2) 10-ричная система счисления.
Система счисления появляется когда число нужно записать в виде строки.
При этом есть два вида преобразования: строка->число и число->строка.
строка->число: функции atol(), strtol().
число->строка(): функции itoa(), snprintf().

3) преобразование числа из 10-ричной системы счисления в 16-ричную
a) взять строку, содержащую запись числа в 10-ричной системе счисления
b) применить strol() и преобразовать в число
c) применить itoa() и преобразовать число в строку с 16-ричной системой счисления
d) вывести итоговую строку

Если и после этого не понял -> прочитать с начала
или задать вопрос чего не понял.
0
Evg
Эксперт CАвтор FAQ
18248 / 6373 / 438
Регистрация: 30.03.2009
Сообщений: 17,643
Записей в блоге: 28
27.09.2009, 09:56 #19
Цитата Сообщение от accept Посмотреть сообщение
а вот scanf она по-твоему что делает, из записи извлекает число ?
а число тогда в каком виде, в неопределённом ?
Да, извлекает. Только не "в каком виде", а "из какого представления". В документации же всё написано: %d - из десятичной, %o из восьмиричной, %x из шестнадцатиричной

C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main (void)
{
  int x = 125;
 
  printf ("dec=%d\n", x);
  printf ("oct=%o\n", x);
  printf ("hex=%x\n", x);
 
  return 0;
}
Везде подаётся одно и то же значение, но печатается разный набор символов. Потому что сичтема счисления есть только в записи числа

Со scanf'ом всё наоборот

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main (void)
{
  int x;
  char *str = "125";
 
  sscanf (str, "%d", &x);
  printf ("%d\n", x);
  sscanf (str, "%o", &x);
  printf ("%d\n", x);
  sscanf (str, "%x", &x);
  printf ("%d\n", x);
 
  return 0;
}
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.09.2009, 10:13 #20
sscanf() - функция выполняющее преобразование: строка->число.
sprintf(), snprint() - преобразование: число->строка.

Добавлено через 33 секунды
Вообщем никакого программирования - чистая математика
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
28.09.2009, 06:49 #21
Цитата Сообщение от Evg
Потому что сичтема счисления есть только в записи числа
C
1
int x = 125;
то есть это не число 125 в десятичной системе, а просто число

Цитата Сообщение от odip
Функция называет itoa(). В форуме есть код.
itoa - это вроде обратная к atoi из нестандартных

Добавлено через 1 час 54 минуты
C
1
char *itoa(int value, char* str, int base);
- не стандартная (у меня нет)
- принимает int, а должна long (тогда int можно сделать)
- не заменима sprintf'ом, как рекомендуют на wiki, так как нет base

так что не является она аналогом для обратной к strtol
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
28.09.2009, 08:39 #22
то есть это не число 125 в десятичной системе, а просто число
125 - это уже число в 10-тичной системе счисления.
На самом деле разглядеть число можно только с помощью какой-то системы счисления
itoa - это вроде обратная к atoi из нестандартных
Ну положим в gcc функция есть.
И вроде в каком-то новом стандарте C или C++ функция itoa() тоже есть.
То что VS2005/2008 не поддерживает этот стандарт - это ведь не проблемы gcc ?
- не стандартная (у меня нет)
Читать умеем, да ?
В форуме есть код этой функции.
При желании в google можно найти.
- принимает int, а должна long (тогда int можно сделать)
При наличии кода легко можно сделать функцию ltoa().
не заменима sprintf'ом, как рекомендуют на wiki, так как нет base
Так это проблемы sprintf(), а не функции itoa() !
так что не является она аналогом для обратной к strtol
Ну хорошо - ltoa() является аналогом
0
Evg
Эксперт CАвтор FAQ
18248 / 6373 / 438
Регистрация: 30.03.2009
Сообщений: 17,643
Записей в блоге: 28
28.09.2009, 09:41 #23
Цитата Сообщение от accept Посмотреть сообщение
то есть это не число 125 в десятичной системе, а просто число
Это просто число, запись котрого в десятичной системе выглядит как "125". Ты можешь написать "x = 0x7d", при этом запись числа изменилась, но поведение программы от этого не поменяется, потому что две разные записи отображают одно и то же значение. Если ты посмотришь бинарники программ, то они будут абсолютно идентичны

Всё остальное в том посте - юридическое цепляние к деталям
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
20.03.2011, 22:47 #24
Цитата Сообщение от Evg Посмотреть сообщение
Это просто число, запись котрого в десятичной системе выглядит как "125"
хм.. тогда логично будет следующие:
C++
1
int a = 1111
я подразумеваю число 15 в двоичном представлении, а что подразумевает мой Dev-c++?
*если я его захочу сложить с другим двоичным/десятичным числом..
и ведь нет! как то все не устаканилось, как сказать компилятору - что это двоичное число и работать с ним нужно следующим образом?
//пришло на ум по битовые операции, правте.
0
Evg
Эксперт CАвтор FAQ
18248 / 6373 / 438
Регистрация: 30.03.2009
Сообщений: 17,643
Записей в блоге: 28
20.03.2011, 23:03 #25
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
я подразумеваю число 15 в двоичном представлении, а что подразумевает мой Dev-c++?
Dev-c++ подразумевает то, что написано в стандарте. А именно: если ты имеешь набор цифр, начинающийся НЕ с нуля, то это десятичная система счисления. Если набор цифр, начинающийся с нуля - это восьмеричная, а если начинается с 0x - шестнадцатеричная. Записи констант в двоичной системе счисления языки Си\Си++ не предусматривают

Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
как сказать компилятору - что это двоичное число
Число не бывает двоичным. Число оно и в Африке число. А двоичным бывает форма записи числа. Почитай здесь раздел номер 8
2
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
21.03.2011, 11:40 #26
Цитата Сообщение от Evg Посмотреть сообщение
Число не бывает двоичным
восьмеричным бывает, десятичным бывает а двоичным не бывает?))))
хорошо спасибо, меседж ясен. есть числа, меняются только их представления
0
Evg
Эксперт CАвтор FAQ
18248 / 6373 / 438
Регистрация: 30.03.2009
Сообщений: 17,643
Записей в блоге: 28
21.03.2011, 11:47 #27
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
восьмеричным бывает, десятичным бывает а двоичным не бывает?))))
хорошо спасибо, меседж ясен. есть числа, меняются только их представления
Не представление, а форма записи. Язык Си поддерживает константы в восьмерично, десятично ишестнадцатеричной формах записи. Почему нет поддержки двоичной - спроси у тех, кто язык разрабатывал
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
21.03.2011, 12:12 #28
Цитата Сообщение от Evg Посмотреть сообщение
Почему нет поддержки двоичной
не встречали ли вы каких нибудь модулей, классов, которые закинул в библиотеку и вызывай когда надо - для двоичной?
0
Evg
Эксперт CАвтор FAQ
18248 / 6373 / 438
Регистрация: 30.03.2009
Сообщений: 17,643
Записей в блоге: 28
21.03.2011, 12:53 #29
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
не встречали ли вы каких нибудь модулей, классов, которые закинул в библиотеку и вызывай когда надо - для двоичной?
Попробуй внятно поставить вопрос и членораздельно пояснить, что конкретно ты хочешь. Ибо у меня есть подозрения, что ты так ничего и не понял
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
21.03.2011, 19:25 #30
Цитата Сообщение от Evg Посмотреть сообщение
Язык Си поддерживает константы в восьмерично, десятично ишестнадцатеричной формах записи.
есть ли какие то дополнения, которые можно скачать и установить, что бы можно было удобно работать с двоичной формой записи.
0
21.03.2011, 19:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2011, 19:25
Привет! Вот еще темы с ответами:

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

Перевод целого (дробного) числа из двоичной системы счисления в десятичную - C++
Здравствуйте. Написали программу в С++, но считает не все значения. помогите найти ошибку. #include &lt;stdio.h&gt; #include &lt;math.h&gt; ...

Перевод чисел из двоичной в десятичную - C++
помогите сделать ее более длинной и чтоб можно было писать еще значения и она не закрывалась , заранее спасибо #include &lt;iostream&gt; ...

Перевод в из двоичной в десятичную систему - C++
Народ! Надо реализовать программу, которая считывает строку в виде двоичного числа и переводит ее десячтичную! Алгоритм я помню перевода...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru