Форум программистов, компьютерный форум CyberForum.ru

Перевод десятичного числа в двоичное - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 61, средняя оценка - 4.67
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
16.10.2011, 19:35     Перевод десятичного числа в двоичное #1
Доброго времени суток всем. Программа выполняет перевод десятиричного числа в двоичное, если остаток от деления a%b==0; записывает что b[n] (в динамическом массиве p[n]) равно нулю, если операция выполнялась в первый раз то b[n]=b[0], и так попорядку. n в данном случае равно 2, то есть если мы представляем число 6 как 110, то b[0]=0; b[1]=1; b[2]=1; два динамических массива создаются с целью того, чтобы потом указатель на b[n] использовать в формуле, к примеру k=b[0]*2+b[2]*3;
сижу втыкаю, не расчехляю вот мой корявый код собсно надеюсь на вашу подсказку
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
#include <stdafx.h>
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
void main()
{
    int a, d;
    const int n=2;
    int *p=new int[a];
    int *b=new int[n];
    for (int p=0; p<=n; p++)
    for (int i=0; i<=n; i++)
    {
        cin>>p[a]>>p[b];
        if (a%2==0)
        b[n]=b[0];
        p[a]=b[n];
        else 
        b[n]=b[1];
        p[a]=b[n];
    }
    else cout<<endl;
    cout<<p[a]<<endl;
    system ("PAUSE");
}
еще пожалста не говорите ЕТА ТЕМА УЖЕ БЫЛА и тд, в поиске ввел и прочитал наверное практически все про перевод с десятичной в разные системы, динамический массив и тд, начал массивы учить позавчера, пока 50\50.

Добавлено через 1 час 17 минут
upup
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.10.2011, 19:39     Перевод десятичного числа в двоичное #2
Можно меньшей кровью:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main()
{
    int num;
    char array[64];
 
    printf( "> " );
    scanf( "%d", &num );
    printf( "%s", itoa( num, array, 2 ) );
 
    return 0;
}
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
16.10.2011, 21:10  [ТС]     Перевод десятичного числа в двоичное #3
а на с++?)
tig1818c
2 / 2 / 0
Регистрация: 31.07.2010
Сообщений: 17
16.10.2011, 21:45     Перевод десятичного числа в двоичное #4
Ну во-первых, вообще не очень понятно, как компилятор глотает эту чушь:
int *p=new int[a]; for (int p=0; p<=n; p++) - повторное использование идентификатора р и вообще в другом качестве не очень корректно;
int a, d; int *p=new int[a]; - использование неинициализированного значения а; и даже если это будет ноль, зачем заказывать память нулевой длины?!
Массив b логичнее сделать типа BOOLEAN, зачем здесь int, если возможные значения 0 и 1?
И вообще, любое число в машине и так имеет исключительно двоичное представление.
Если я правильно понял из "мы представляем число 6 как 110, то b[0]=0; b[1]=1; b[2]=1",
то цикл для n знаков будет выглядеть примерно так:

for (i=0; i<n; i++) { b[i] = (a & 0x0001<<i) > 0; }

И для числа, например 6, получим b[0]=0; b[1]=1; b[2]=1
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
16.10.2011, 23:34  [ТС]     Перевод десятичного числа в двоичное #5
ты прав на счет побитового сдвига, так на самом деле и надо, только можно поподробнее пожалуйста?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
16.10.2011, 23:35     Перевод десятичного числа в двоичное #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
void convert_to_bin (unsigned decimal_value)
{
   char digit = (decimal_value % 2) ? '1' : '0';
   unsigned next = decimal_value / 2;
   if (next)
   {
      convert_to_bin (next);
   }
   printf("%c", digit);
}
 
int main()
{
   convert_to_bin(123);
   return 0;
}
хотя на лиспе красивше выглядит
Abbat_90
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 26
16.10.2011, 23:39     Перевод десятичного числа в двоичное #7
вроде есть короткая функция...
C++
1
itoa(a,buff,2);
и всё там...
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
16.10.2011, 23:44     Перевод десятичного числа в двоичное #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <limits.h>
 
char *int_to_binary_string(char *s, unsigned int n) {
   int i = sizeof(int) * CHAR_BIT;
   char *p = s;
   
   while (i != 0) {
      *p++ = ((n >> --i) & 1) + '0';
   }
   
   *p = 0;
   return s;
}
 
int main() {
   char buf[33] = "";
   printf("%Xh = %sb", 0x815F, int_to_binary_string(buf, 0x815F));
   return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от Abbat_90 Посмотреть сообщение
вроде есть короткая функция...
Эта функция не является стандартной.
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
17.10.2011, 00:48  [ТС]     Перевод десятичного числа в двоичное #9
ребятушки=D на с++ надо) начал изучать программирование именно с него, хоть немного знаю существенные отличия, алгоритм не сильно сложный, но лучше все же на с++!
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
17.10.2011, 07:08     Перевод десятичного числа в двоичное #10
Цитата Сообщение от fort-_-minor Посмотреть сообщение
ребятушки=D на с++ надо
брюхо не треснет?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
17.10.2011, 09:33     Перевод десятичного числа в двоичное #11
Вот хороший алгоритм для перевода в q-ичной системе счисления при http://www.cyberforum.ru/cgi-bin/latex.cgi?2\leq q \leq 36
http://www.cyberforum.ru/showthread.php?p=1958349
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
17.10.2011, 10:13     Перевод десятичного числа в двоичное #12
Цитата Сообщение от Thinker Посмотреть сообщение
Вот хороший алгоритм для перевода в q-ичной системе счисления
Для двоичной лучше все таки битовые
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
17.10.2011, 10:15     Перевод десятичного числа в двоичное #13
Цитата Сообщение от fasked Посмотреть сообщение
Для двоичной лучше все таки битовые
Это да, самый лучший вариант с битами. Это я ТС подкинул программу от easybudda для общего случая, может пригодится
tig1818c
2 / 2 / 0
Регистрация: 31.07.2010
Сообщений: 17
17.10.2011, 22:31     Перевод десятичного числа в двоичное #14
Насчет использования itoa: если я правильно понял, то просителю требуется не преобразование целого в символьный вид, а именно побитовая раскладка целого в массив, индексы которого соответствуют номеру бита исходного целого. itoa для этого не годится. Можно, конечно, использовать последовательное деление. Но, напомню, алгоритм деления в любом процессоре - вещь весьма сложная. Так зачем зазря есть ресурс? Можно ведь и гланды через ж... удалять, но надо ли?
На мой взгляд для данного случая целесообразно использовать именно побитовый сдвиг либо исходного целого вправо и проверять всегда младший (нулевой) бит, либо шкалу влево,
т.е. для вышеописанных примеров это будет:
1 вариант b[i] = (a>>i & 0x0001) > 0;
2 вариант b[i] = (a & 0x0001<<i) > 0;
Результат в b[i] будет либо TRUE (т.е. 1) если соотв. бит a стоит в 1, либо 0 если это не так.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
17.10.2011, 22:37     Перевод десятичного числа в двоичное #15
tig1818c, так и чем #8 не нравится?
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.10.2011, 22:41     Перевод десятичного числа в двоичное #16
На C++ так на C++:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <bitset>
 
int main()
{
    int num;
 
    std::cout << "> ";
    std::cin >> num;
 
    std::cout << std::bitset<32>(num).to_string();
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2011, 22:57     Перевод десятичного числа в двоичное
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
17.10.2011, 22:57  [ТС]     Перевод десятичного числа в двоичное #17
уже написал полность программу, не актуальна тема, закрывайте, всем большое спасибо за помощь!=)
Yandex
Объявления
17.10.2011, 22:57     Перевод десятичного числа в двоичное
Ответ Создать тему
Опции темы

Текущее время: 14:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru