Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> int to binary - как конвертировать в бинарный? Из int в бинарный. 
V
    Опции темы
DragoonFighter
Дата 27.1.2009, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



Здравствуйте Программисты, 

мне нужно скажем int=123; преобразовать в бинарный код. 
Я искал в гоогле и нашёл очень хорошую и рабочую функцию:
Код

void binary(int number) {
    int remainder;

    if(number <= 1) {
        cout << number;
        return;
    }

    remainder = number%2;
    binary(number >> 1);    
    cout << remainder;
}
...
int number;

    cout << "Please enter a positive integer: ";
    cin >> number;
    if (number < 0) 
        cout << "That is not a positive integer.\n";
    else {
        cout << number << " converted to binary is: ";
        binary(number);
        cout << endl;
    }


Всё работает прекрасно! Но есть одна проблема. Этот бинарный код мне нужно преоброзовать снова в int.
То есть: ввод 123 вывод 1111011 и это число записывается в int.

Как это сделать в самом void я знаю, но мне нужно создать этот int в main а так как я незнаю и не могу не где найти как вытащить int из void и засунуть его в int в main, мне нужна функция которая полностью работает в main.
Я ну думаю что это можно сделать с while() поскольку я пробовал всё что мог и не чего не вышло, но если это возможно, то прошу пожалуйста пример с whiel(). 
За ранние спасибо!
Надеюсь я не очень плохо выразился?
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
destrd
Дата 27.1.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 1.10.2008

Репутация: нет
Всего: 4



Ну переведите в строку, а потом типа atoi с основанием 10
--------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems.        -- Jamie Zawinski in comp.lang.emacs
PM MAIL ICQ   Вверх
DragoonFighter
Дата 27.1.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



Цитата(destrd @ 27.1.2009,  21:54)
Ну переведите в строку, а потом типа atoi с основанием 10

Это как? Можно пример?
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
GoldFinch
Дата 27.1.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



бгг тема
учите системы счисления и не задавайте глупых вопросов %)

Добавлено через 52 секунды
а код в 1м посте однозначно жжот)))
PM MAIL ICQ   Вверх
mes
Дата 27.1.2009, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



вывод целочисленного числа числа в двоичной системе:

Код

int n = 122;
for (int i=0; i<=sizeof(n)*8; ++i) std::cout<< (n>>i & 1);

ну а в остальном 
Цитата(DragoonFighter @  27.1.2009,  20:45 Найти цитируемый пост)
Надеюсь я не очень плохо выразился?

не хочется Вас разочаровывать, но правда дороже smile

Это сообщение отредактировал(а) mes - 27.1.2009, 23:06


--------------------
PM MAIL WWW   Вверх
DragoonFighter
Дата 27.1.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



Цитата(mes @ 27.1.2009,  22:58)
вывод целочисленного числа числа в двоичной системе:

Код

int n = 122;
for (int i=0; i<=sizeof(n)*8; ++i) std::cout<< (n>>i & 1);

ну а в остальном 
Цитата(DragoonFighter @  27.1.2009,  20:45 Найти цитируемый пост)
Надеюсь я не очень плохо выразился?

не хочется Вас разочаровывать, но правда дороже smile

Вот, как рас то что искал. Благодарю! А можно изменить общую длину так, чтобы так много нулей не было. То есть чтобы длинна вывода зависела от полной длинны ввода.

Например:
int 10:

вывод:
010100000000000000000000000000000

чтобы вывод был:
0101

а если int = 9876543210

то чтобы вывод был не:
010111100000000000000000000000000

а:
0101111
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
xvr
Дата 28.1.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(mes @ 27.1.2009,  22:58)
вывод целочисленного числа числа в двоичной системе:

Код

int n = 122;
for (int i=0; i<=sizeof(n)*8; ++i) std::cout<< (n>>i & 1);


Угу, только задом-наперед   smile 

Код

int n = 122;
for (int i=sizeof(n)*8; i--;) std::cout<< (n>>i & 1);


PM MAIL   Вверх
mes
Дата 28.1.2009, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(xvr @  28.1.2009,  16:41 Найти цитируемый пост)
Угу, только задом-наперед   smile 

точно  smile 


Цитата(DragoonFighter @  27.1.2009,  22:19 Найти цитируемый пост)
То есть чтобы длинна вывода зависела от полной длинны ввода.

Код

int n = 8;

 std::cout<<0;
 for (int i=sizeof(n)*8; i--;)
 if (n>>(i-1))
 {
     for (int j=i; j--;) std::cout<< (n>>j & 1);
     break;
 }
 std::cout<<"b";
 


пример содержит ошибку.. исправление смотрите ниже..


Это сообщение отредактировал(а) mes - 28.1.2009, 23:47


--------------------
PM MAIL WWW   Вверх
DragoonFighter
Дата 28.1.2009, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



Цитата(xvr @ 28.1.2009,  17:41)
Цитата(mes @ 27.1.2009,  22:58)
вывод целочисленного числа числа в двоичной системе:

Код

int n = 122;
for (int i=0; i<=sizeof(n)*8; ++i) std::cout<< (n>>i & 1);


Угу, только задом-наперед   smile 

Код

int n = 122;
for (int i=sizeof(n)*8; i--;) std::cout<< (n>>i & 1);

Да, я уже переделал задом на перёд, но всё равно спасибо!

Добавлено @ 19:14
Цитата(mes @ 28.1.2009,  18:29)
Цитата(xvr @  28.1.2009,  16:41 Найти цитируемый пост)
Угу, только задом-наперед   smile 

точно  smile 


Цитата(DragoonFighter @  27.1.2009,  22:19 Найти цитируемый пост)
То есть чтобы длинна вывода зависела от полной длинны ввода.

Код

int n = 8;

 std::cout<<0;
 for (int i=sizeof(n)*8; i--;)
 if (n>>(i-1))
 {
     for (int j=i; j--;) std::cout<< (n>>j & 1);
     break;
 }
 std::cout<<"b";
 

Класс благодарю! Спасибо вам за помощь! 
Мне надо было использовать sizeof()

Огромное спасибо! 

Один вопрос: зачем cout << "0"; и cout << "b"; ?

Это сообщение отредактировал(а) DragoonFighter - 28.1.2009, 19:51
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
mes
Дата 28.1.2009, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(DragoonFighter @  28.1.2009,  18:12 Найти цитируемый пост)
Один вопрос: зачем cout << "0"; и cout << "b"; ?

закомментируй, посмотри на результат, и сравни с  некомментированным результатом   smile 


--------------------
PM MAIL WWW   Вверх
DragoonFighter
Дата 28.1.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



Цитата(mes @ 28.1.2009,  21:24)
Цитата(DragoonFighter @  28.1.2009,  18:12 Найти цитируемый пост)
Один вопрос: зачем cout << "0"; и cout << "b"; ?

закомментируй, посмотри на результат, и сравни с  некомментированным результатом   smile

Теоретически я могу убрать "b"? А ноль просто для начального старта или как? 
Кратко: Можно их убрать, чтобы были просто буквы и только бинарный код, или?

Добавлено через 1 минуту и 4 секунды
Так, мне ещё 3 поста и я могу репутацию ставить.  smile 
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
mes
Дата 28.1.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(DragoonFighter @  28.1.2009,  20:40 Найти цитируемый пост)
Теоретически я могу убрать "b"? 

да, "b" поставлен для "красоты".


Цитата(DragoonFighter @  28.1.2009,  20:40 Найти цитируемый пост)
А ноль просто для начального старта или как? 

во первых

Цитата(DragoonFighter @  27.1.2009,  22:19 Найти цитируемый пост)
чтобы вывод был:
0101

во вторых :вначале идет поиск значимого бита и с него начинается вывод, и если значащий бит не найден (при n==0) то выводить нечего и следовательно этот ноль является "опорным"


Цитата(DragoonFighter @  28.1.2009,  20:40 Найти цитируемый пост)
Кратко: Можно их убрать, чтобы были просто буквы и только бинарный код, или?

не понял о чем речь.



--------------------
PM MAIL WWW   Вверх
DragoonFighter
Дата 28.1.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



 smile  Ну я и имел в виду "опорный ноль". Рас это так, то всё понятно, спасибо! 

Ну а насчёт краткого: Имел в виду чтобы были только цифры
Благодарю mes! Выручили! 
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
mes
Дата 28.1.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(DragoonFighter @  28.1.2009,  20:59 Найти цитируемый пост)
 smile  Ну я и имел в виду "опорный ноль". Рас это так, то всё понятно, спасибо! 

из за второй причины, необязатльно чтоб ноль выводился впереди всегда  .

можно например дополнить код условием, тогда :
Код

 if (!n) std::cout<<0;
 for ...



Цитата(DragoonFighter @  28.1.2009,  20:40 Найти цитируемый пост)
Кратко: Можно их убрать, чтобы были просто буквы и только бинарный код, или?

Цитата(DragoonFighter @  28.1.2009,  20:59 Найти цитируемый пост)
Ну а насчёт краткого: Имел в виду чтобы были только цифры. 

a я чуть  голову не поломал :  smile  smile 


Это сообщение отредактировал(а) mes - 28.1.2009, 22:13


--------------------
PM MAIL WWW   Вверх
DragoonFighter
Дата 28.1.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



 smile   smile  
Да я так и сделаем с условием. Благодарю ещё раз! 

Вопрос полностью решён! 
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1176 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.