• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Системы счисления.

  • Автор темы Автор темы MrCyber
  • Дата начала Дата начала

MrCyber

Ученик
Регистрация
26 Сен 2010
Сообщения
1
Реакции
0
Баллы
0
Системы счисления.

Помогите написать простую задачку по переводу из десятичной в двоичную системы счисления. Просьба - не использовать массивы. Заранее спасибо!
 
Язык программирования какой?
 
Паскаль скорее .у меня дома решенное где то есть , как найду выложу
 
Надо же... и впрямь. Впрочем, сейчас нарисовал попроще, без функции. Если действительно Паскаль, и если речь идёт о преобразовании только целых положительных чисел, то можно так:
Код:
VAR
 Dec_Num:LongInt;
 n, i:INTEGER;
BEGIN
 Write('Enter the decimal number: ');
 ReadLn(Dec_Num);
 n:=TRUNC(Ln(1.0*Dec_Num)/Ln(2.0));
 Write('Binary number: ');
 For i:=n downto 0 do
  begin
   Write((Dec_Num div ROUND(Exp(i*Ln(2.0)))));
   Dec_Num:=Dec_Num mod ROUND(Exp(i*Ln(2.0)));
  end;
 ReadLn;
END.
 
И еще чуть более "продвинутый" вариант. Здесь программа зациклена и прерывается, если введен 0:
Код:
VAR
 Dec_Num, Ex_code:LongInt;
 n, i:INTEGER;
BEGIN
 REPEAT
  Write('Enter the decimal number, "0" to exit: ');
  ReadLn(Dec_Num);
  Ex_code:=Dec_Num;
  If Ex_code>0 then
   begin
    n:=TRUNC(Ln(1.0*Dec_Num)/Ln(2.0));
    Write('Binary number: ');
    For i:=n downto 0 do
     begin
      Write((Dec_Num div ROUND(Exp(i*Ln(2.0)))));
      Dec_Num:=Dec_Num mod ROUND(Exp(i*Ln(2.0)));
     end;
    WriteLn;
    WriteLn;
   end;
 UNTIL Ex_code=0;
END.
 
Извиняюсь, что немного не по теме, новую не хотел создавать, не подскажите в какой системе счисления 3 x 3 = 10? Чёто я никак не могу сообразить, не в восьмеричной случайно?)
 
Извиняюсь, что немного не по теме, новую не хотел создавать, не подскажите в какой системе счисления 3 x 3 = 10? Чёто я никак не могу сообразить, не в восьмеричной случайно?)
Именно в ней.
 
3*3 в десятичной равно 9. Для числа 3 переполнения разряда нет, то есть это допустимое значение разряда. Нужно подобрать такую систему счисления, чтобы было переполнение разряда ровно на 1, то есть, так как полученное значение равно 10 и присутствует перевод 1 в старший разряд, то результат произведения совпадает с основанием системы счисления. Отсюда система счисления имеет основанием число 9. Допустимые значения разряда - 0, 1, 2, 3, 4, 5, 6, 7, 8, переполнение разряда возникает при попытке использовать число 9 и большее.

Ответ - в девятиричной системе счисления.
 
Да, вот на таких мелочах я вечно заваливаюсь...
 
AlexZir, большое спасибо за разъяснение =)
 
Назад
Сверху