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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2011, 22:45   #1
Вера_09
Новичок
Джуниор
 
Регистрация: 27.09.2011
Сообщений: 2
По умолчанию системы счисления

как перевести число 10111010 из двоичной системы счисления в семеричную?
Вера_09 вне форума Ответить с цитированием
Старый 28.09.2011, 01:05   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

обычно используют десятичную СС как промежуточную.
т.е. код сначала переводят из двоичной в десятичную, потом из десятичной в семеричную.

Примером перевода в любую СС на форуме было достаточно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.09.2011, 06:05   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
обычно используют десятичную СС как промежуточную.
т.е. код сначала переводят из двоичной в десятичную, потом из десятичной в семеричную.
Серж, зачем переводить в десятичную?.. Думаю, ты на самом деле имел в виду "перевод во внутреннее машинное представление", что по сути есть просто абстрактное число. В данном случае не важно, какое именно представление используется внутри - двоичное, троичное или даже действительно десятичное (кстати, были такие)).

Вот простенькая реализация на этом принципе - она, кстати, годится для перевода из любой системы счисления в любую другую (до 10, основания задаются константами) - и даже с проверкой на корректность входного числа )). Числа только целые неотрицательные, ограничение по величине числа - диапазон LongInt.
Код:
// transfer an integer number from any numeration system to any other
// by Lapp, programmersforum.ru
const
  bIn= 2;                  // input numeration base, from 2 through 10
  bOut= 7;                 // output numeration base, from 2 through 10
  digits= ['0'..Chr(47+bIn)];

var
  n: LongInt;
  i: integer;
  sIn,sOut: string;        // input and output numbers

begin
  Write('enter a number in ',bIn,'-based numeration: ');
  Readln(sIn);
  n:= 0;
  for i:=1 to Length(sIn) do
    if sIn[i] in digits then n:= n*bIn+Ord(sIn[i])-48
    else begin
      Writeln('incorrect digit at pos ',i);
      Halt
    end;
  sOut:='';
  while n>0 do begin
    sOut:= Chr(n mod bOut + 48)+sOut;
    n:= n div bOut
  end;
  if sOut='' then sOut:='0';
  Writeln('this number transferred to ',bOut,'-based numeration: ',sOut)
end.
И можно без особого труда добавить лат.буквы, расширив тем самым диапазон оснований СС до 36.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 28.09.2011, 11:57   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Серж, зачем переводить в десятичную?.. Думаю, ты на самом деле имел в виду "перевод во внутреннее машинное представление", что по сути есть просто абстрактное число.
ну да, спасибо за уточнение. именно это я имел в виду.
Строка(в любой системе счисления, например, в двоичной) -> ЧисловойТипДанных (например, Logint, если речь о Паскаль).
разумеется, ЧисловойТипДанных - это машинное представление целого числа.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Системы счисления. C++ Alovar Помощь студентам 2 25.12.2010 23:26
Системы счисления.10->5-7. Corpinccom Помощь студентам 0 22.09.2010 12:54
системы счисления neprogrammist Общие вопросы Delphi 4 24.05.2010 00:29
Системы счисления glupayastudentka Помощь студентам 3 28.06.2009 21:13