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

Поиск:

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


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


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

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



приведенный выше код содержит ошибку  smile 
вот исправленный  вариант :
Код

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



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


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


Шустрый
*


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

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



Цитата(mes @ 28.1.2009,  23:28)
приведенный выше код содержит ошибку  smile 
вот исправленный  вариант :
Код

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


 smile  ну нечё, всё круто!

Код

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int n;
    int b;
    cout << "Your number here: ";
    cin >> n;
    // to binary
    //cout << 0;
    for (int i=sizeof(n)*8; i--;)
    if (n >> (i-1))
    {
                  if  (!n) std::cout<<0;
                  for (int i=sizeof(n)*8-1; i>=0; --i)
                  if  (n>>i) for (;i>=0; --i) std::cout<< (n>>i & 1);
                 break;
                 }
    cout << endl << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}



Вот так выглядит вся прога.
Теоретически, не токая уж и важная ошибка.... 
А интересно, сколько цифр можно запихать в int? 
Я раньше в книге читал что оно не большое, то есть ограничено. 
Но забыл на сколько, мне нужно где то около 1 миллиарда цифр.
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
pan2004
Дата 28.1.2009, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(DragoonFighter @  28.1.2009,  23:49 Найти цитируемый пост)
сколько цифр можно запихать в int? 

32 двоичных разряда, обычно. Это примерно 10^9


Цитата(DragoonFighter @  28.1.2009,  23:49 Найти цитируемый пост)
мне нужно где то около 1 миллиарда цифр.

1 миллиард десятичных цифр? Это уже если не на гигабайты, то на сотни мегабайт ОЗУ точно.


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
mes
Дата 28.1.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(DragoonFighter @  28.1.2009,  22:49 Найти цитируемый пост)

Вот так выглядит вся прога.

у меня в глазах двоится или в коде действительно цикл вложен сам в себя ??  smile 

а также зачем int b; ?

Добавлено через 2 минуты и 53 секунды
Код

#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
    int n;
    cout << "Your number here: ";
    cin >> n;
 
// cout n as binary
    if  (!n) cout<<0;
    for (int i=sizeof(n)*8-1; i>=0; --i)
    if  (n>>i) for (;i>=0; --i) cout<< (n>>i & 1);

    cout << endl << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}



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


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


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

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



Цитата(pan2004 @  28.1.2009,  22:54 Найти цитируемый пост)
1 миллиард десятичных цифр? 

я думаю имелось ввиду, что нужна  возможность вместить значение миллиард. 

http://www.cplusplus.com/reference/clibrary/climits/


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


Шустрый
*


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

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



Цитата(pan2004 @ 28.1.2009,  23:54)
Цитата(DragoonFighter @  28.1.2009,  23:49 Найти цитируемый пост)
сколько цифр можно запихать в int? 

32 двоичных разряда, обычно. Это примерно 10^9


Цитата(DragoonFighter @  28.1.2009,  23:49 Найти цитируемый пост)
мне нужно где то около 1 миллиарда цифр.

1 миллиард десятичных цифр? Это уже если не на гигабайты, то на сотни мегабайт ОЗУ точно.

Я пишу программку, которая весь текст, то есть всё что вводят превращает в цифры, в бинарный код, потом сокращает в буквы, в hex и снова в бинарный. Так можно например кодировать файлы, e-mail, текст чата, итд. 
При этом засуну эту функцию в программу которая создаёт пароль. Мне нужен пароль на 200gb его на жесткий диск и этим паролем я закрою мои приватные данные. Эта идея была взята с радио активной станции в России. Там закодировали один важный файл несколькими терабайтам длинным паролем. 

Это причина почему я хотел знать сколько вмещается в int. 
А так конвертирование в бинарный код мне нужно для кодирование текста для типа приватного чата, чтобы если на пример мусара перехватят канал, чтобы им хрен что от моего текста понятно было. Ну, что то типа того.

Добавлено через 2 минуты и 52 секунды
Цитата(mes @ 28.1.2009,  23:55)
Цитата(DragoonFighter @  28.1.2009,  22:49 Найти цитируемый пост)

Вот так выглядит вся прога.

у меня в глазах двоится или в коде действительно цикл вложен сам в себя ??  smile 

а также зачем int b; ?

Добавлено @ 23:58
Код

#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
    int n;
    cout << "Your number here: ";
    cin >> n;
 
// cout n as binary
    if  (!n) cout<<0;
    for (int i=sizeof(n)*8-1; i>=0; --i)
    if  (n>>i) for (;i>=0; --i) cout<< (n>>i & 1);

    cout << endl << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Ай тфу блин, всё вместе ляпнул... не, извините, сплю уже,   smile не то копировал... 
b не нужно, и да ваш правильный код тот что и у меня.  smile

Добавлено через 6 минут и 45 секунд
Цитата(mes @ 29.1.2009,  00:15)
Цитата(pan2004 @  28.1.2009,  22:54 Найти цитируемый пост)
1 миллиард десятичных цифр? 

я думаю имелось ввиду, что нужна  возможность вместить значение миллиард. 

http://www.cplusplus.com/reference/clibrary/climits/

Ну предётся сделать while() чтобы ULONG_MAX    Maximum value for an object of type unsigned long int    4294967295  был умножен столько раз, чтобы вышло минимум 1 миллион. Ну это так, просто для любопытства и интереса испробовать  smile 
Нечего серьёзного. 
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
mes
Дата 29.1.2009, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(DragoonFighter @  28.1.2009,  23:15 Найти цитируемый пост)
Я пишу программку, которая весь текст, то есть всё что вводят превращает в цифры, в бинарный код, потом сокращает в буквы, в hex и снова в бинарный. Так можно например кодировать файлы, e-mail, текст чата, итд. 

нда.. может лучше почитать вначале книжки, тогда возможно эти наполеновские планы превратятся в реальные цели. smile

любое число или буква уже и так хранится в двоичном виде, а то что std::cout выводит число в десятичном виде или как букву, 
так это проявление работы функции, которая выводит переменную в удобном для пользователя виде.

остальное комментировать не вижу смысла на текущем этапе.


Это сообщение отредактировал(а) mes - 29.1.2009, 00:24


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


Шустрый
*


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

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



Цитата(mes @ 29.1.2009,  00:23)
Цитата(DragoonFighter @  28.1.2009,  23:15 Найти цитируемый пост)
Я пишу программку, которая весь текст, то есть всё что вводят превращает в цифры, в бинарный код, потом сокращает в буквы, в hex и снова в бинарный. Так можно например кодировать файлы, e-mail, текст чата, итд. 

нда.. может лучше почитать вначале книжки, тогда возможно эти наполеновские планы превратятся в реальные цели. smile

любое число или буква уже и так хранится в двоичном виде, а то что std::cout выводит число в десятичном виде или как букву, 
так это проявление работы функции, которая выводит переменную в удобном для пользователя виде.

остальное комментировать не вижу смысла на текущем этапе.

Да, это понятно, но я перевожу буквы в свои цифры. У меня в принципе всё для кодирования готово! Просто осталось создать чат, но этим займёмся позже, потому что вы правы, для начала надо читать книги! Ну, пока у меня только одна проблема была, переделать числа в бинарный. Теперь всё пока идёт дальше по тихонько. 
Да и вообще это всё я пробую новые функции которые я изучаю. Скажем во попалась sizeof() сразу делаю с ней пример. Ну вот такой пример и в голову попал пере конвертировать цифры в бинарный. 
Короче всё для знания и изучения нового.

Огромное спасибо вам!
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
bsa
Дата 29.1.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



DragoonFighter, для шифрования данных можно использовать openssl (это библиотека такая), с ее помощью организуются шифрованные каналы связи (HTTPS, SSH, TLS) в большинстве открытых приложений. А для кодирования/декодирования ключа, можно воспользоваться банальной побитовой ксоркой (XOR - исключающие "ИЛИ") ключа с хэшем (MD5, SHA1 и т.п.) пароля, так как: A xor B = C; C xor A = B; C xor B = A
А вот зачем тебе переводить в двичную, чтобы перевести в 16-тиричную, чтобы перевести в двоичную, совсем непонятно. Может тебе нужно какое-нибудь кодирование base64?
PM   Вверх
DragoonFighter
Дата 31.1.2009, 00:16 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(bsa @ 29.1.2009,  16:31)
DragoonFighter, для шифрования данных можно использовать openssl (это библиотека такая), с ее помощью организуются шифрованные каналы связи (HTTPS, SSH, TLS) в большинстве открытых приложений. А для кодирования/декодирования ключа, можно воспользоваться банальной побитовой ксоркой (XOR - исключающие "ИЛИ") ключа с хэшем (MD5, SHA1 и т.п.) пароля, так как: A xor B = C; C xor A = B; C xor B = A
А вот зачем тебе переводить в двичную, чтобы перевести в 16-тиричную, чтобы перевести в двоичную, совсем непонятно. Может тебе нужно какое-нибудь кодирование base64?

Хорошая информация! Благодарю! 
Насчёт перевода, это просто своё кодирование, просто для изучения и пробы. Просто чем больше разных переводов, на пример с букв в инт с инта в бинах с бинар в хекс и сного в бинар и т.д. 
К стате base64 я уже тоже использовал но поскольку тут только 64 (0-63) символов, я создал свой, 90 символов. 
Просто буквы в цифры, потом эти цифры с помощью например бинарного и хекса закодировать. 
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
mes
Дата 31.1.2009, 00:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(DragoonFighter @  30.1.2009,  23:16 Найти цитируемый пост)
е base64 я уже тоже использовал но поскольку тут только 64 (0-63) символов, я создал свой, 90 символов. 


Цитата(DragoonFighter @  30.1.2009,  23:16 Найти цитируемый пост)
Просто буквы в цифры, потом эти цифры с помощью например бинарного и хекса закодировать. 

и все таки мне кажется, что Вы неправильно "воспринимаете происходящее".



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


Опытный
**


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

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



DragoonFighter, я согласен с mes, Вы что-то явно путаете.


--------------------
user posted image
PM MAIL   Вверх
DragoonFighter
Дата 31.1.2009, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну, как я понял base64 кодирует символы. 
То есть на пример 123 = MTIz
Правильно? 
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
xvr
Дата 31.1.2009, 19:14 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(DragoonFighter @ 31.1.2009,  13:29)
Ну, как я понял base64 кодирует символы. 
То есть на пример 123 = MTIz
Правильно?

Оно символы не КОДИРУЕТ, а всего лишь переводит в другой вид. Для целей защиты информации (что бы враги не догадались) оно СОВЕРШЕННО непригодно. Равно как и другие способы представления, типа перевода в бин/хекс/хз куда.
Тогда уж проще упаковать исходный текст - такое кодирование, просто закачаешся  smile
У всех систем шифрования есть одно неприменное требование - возможность расшифровать сообщение должно базироваться ТОЛЬКО на знании ключа.
Т.е. злоумышленник может иметь все, вплоть до исходных текстов программ шифрования и дешифрования, но без ключа он расшифровать все равно не сможет

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


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


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

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



Цитата(xvr @  31.1.2009,  18:14 Найти цитируемый пост)
Оно символы не КОДИРУЕТ

Поправка : Кодирует, но не шифрует.   smile 
DragoonFighter, а простое кодирование и шифрование прменяются совсем для разных целей. 
В  контексте Ваших постов речь шла о шифровании, и предлагаемые методы кодирования для этого не предназначены.


Это сообщение отредактировал(а) mes - 31.1.2009, 19:38


--------------------
PM MAIL WWW   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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