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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++]обработка целых чисел 
:(
    Опции темы
al_lex_ey
Дата 15.12.2007, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне нужно, чтобы программа выводила число в двоичном виде.
Подскажите, пожалуйста, как это сделать.
PM MAIL   Вверх
t_gran
Дата 18.12.2007, 04:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

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



Код

int dec2bin (const unsigned long inData)
{
   struct stBin                             // структура (стек) для хранения двоичного числа
   {
      bool data;                            // само число ("true"= 1, "false"= 0)
      stBin *next;                          // указатель на следующее число
   };
   unsigned long data= inData;              // Дублируем входное десятичное число
   stBin *bin= new stBin;                   // Объявляем переменную каторая и будет содержать 2-ое число
   bin->data= data % 2 ? true : false;      // Заносим первое значение (по правилу перевода числа с одной СИ в другую)
   bin->next= NULL;                         // Дно стека
   data= data / 2;                          // Изменяем значение исходного числа (по правилу перевода числа с одной СИ в другую)
   while (data)                             // До победного мучием дублированное число
   {
      stBin *node= new stBin;               // Создаем новый узел
      node->data= data % 2 ? true : false;  // Получаем значение (по правилу перевода числа с одной СИ в другую)
      node->next= bin;                      // Добавляем к созданному узлу все то, что уже накопилось
      bin= node;                            // Переприсваиваем, дублируем указатель (на узел) каторый стал верхом стека
      data= data / 2;                       // Изменяем значение исходного числа (по правилу перевода числа с одной СИ в другую)
   }
   while (bin)                              // Теперь вытаскиваем получившееся значения
   {
      printf ('%c', bin->data ? '1' : '0'); // Простой формат вывода
      stBin *node= bin;                     // Копируем указатель на верхний узел стека
      bin= bin->next;                       // Спускаемся на ухзел ниже
      delete node;                          // Убиваем нерадивый (ненужный), верхний узел
   }
   return 0;
}


Это сообщение отредактировал(а) t_gran - 18.12.2007, 11:11


--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
orthrus
Дата 18.12.2007, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



вот, работает через сдвиг влево:

Код

#include <iostream>

using namespace std;

int main(){
    unsigned long int i = 0xff0000ff; // обрабатываемое число
    while (i!=0) //пока число неравно 0 значит есть еденички
    {
        if ((i & 0x80000000) == 0x80000000) {cout << 1;} 
        else {cout << 0;}    
        i <<= 1; // сдвигаем число i на один разряд влево
    }
    return 0;
}


Это сообщение отредактировал(а) orthrus - 18.12.2007, 06:57


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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