Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2009, 14:33   #1
Rusa85
Новичок
Джуниор
 
Регистрация: 02.02.2009
Сообщений: 2
По умолчанию Нужна помощь с двоичными числами

Есть следующее задание я генерирую двоичное число размером 80 бит.Мне необходимо преобразовать это число к 10 виду.Подскажите как мне это сделать.Калькулятор поддерживает максимум 64 бита.Прога делается в Delphi.

Последний раз редактировалось Rusa85; 02.02.2009 в 14:40.
Rusa85 вне форума Ответить с цитированием
Старый 02.02.2009, 14:44   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Данный алгоритм работает с любым количеством бит.
Код:
void DecToBin (long num,char *bin)
{
   int i,j;
   char tmp[33];

   for (i=0; num; num>>=1, i++)tmp[i] = (num&1)?('1'):('0');
   for (j=0; j<i; j++) bin[j] = tmp[i-j-1];
}
Код на C, но думаю если надо на Pascal нетрудно самому перебить.
Украдено с http://algolist.manual.ru/maths/teornum/count_sys.php Посмотри на этой странице описан общий алгоритм перевода из/в любую СС.
Hollander вне форума Ответить с цитированием
Старый 02.02.2009, 15:34   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

не помню где нашёл эту ф-ию
Код:
function BinToInt (BinStr: string) : Int64;
var
   I, Len: integer;
const
   Mask: int64 = 1;
begin
   Result := 0;

   Len := Length (BinStr);
   if (UpperCase (BinStr [Len]) = 'B') then begin
      Dec (Len);
   end; {if}

   for I := 1 to Len do begin
      case BinStr [I] of
         '0':
           begin
              {ничего не делаем}
           end;
         '1':
           begin
              Result := Result OR (Mask SHL (Len - I))
           end;
      else begin
              raise Exception.Create ('Wrong binary string');
           end;
      end; {case}
   end; {for I}
end;
SERG1980 вне форума Ответить с цитированием
Старый 03.02.2009, 09:01   #4
Rusa85
Новичок
Джуниор
 
Регистрация: 02.02.2009
Сообщений: 2
По умолчанию

To SERG1980.ну типа такого кода у меня уже есть, нормально пересчитывает двоичное число размером 31 бит, а вот 32 уже начинаются замарочки.вот пример 1000110001000101111010011101001=117 6696041.но если на 1 бит больше 10001100010001011110100111010011=-1941575213.
Rusa85 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна помощь с массивами и числами Pascal Rus 47 Помощь студентам 1 13.12.2008 01:56
Помогие с двоичными и 16ными значениями !! UnD)eaD)Snake Общие вопросы Delphi 3 01.08.2007 20:47
Нужна помощь с БД Marmot Помощь студентам 1 23.01.2007 16:19