Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Системы счисления. (http://www.tehnari.ru/f41/t40305/)

MrCyber 26.09.2010 22:38

Системы счисления.
 
Помогите написать простую задачку по переводу из десятичной в двоичную системы счисления. Просьба - не использовать массивы. Заранее спасибо!

AlexZir 27.09.2010 09:05

Язык программирования какой?

LAMPARD 27.09.2010 09:07

Паскаль скорее .у меня дома решенное где то есть , как найду выложу

KiD2 27.09.2010 10:12

Хм это уже было... http://www.tehnari.ru/f43/t25826/

Vladimir_S 27.09.2010 10:17

Цитата:

Сообщение от KiD2 (Сообщение 397085)
Хм это уже было... http://www.tehnari.ru/f43/t25826/

Надо же... и впрямь. Впрочем, сейчас нарисовал попроще, без функции. Если действительно Паскаль, и если речь идёт о преобразовании только целых положительных чисел, то можно так:
Код:

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.


Vladimir_S 27.09.2010 10:34

И еще чуть более "продвинутый" вариант. Здесь программа зациклена и прерывается, если введен 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.


FPS 15.02.2011 23:33

Извиняюсь, что немного не по теме, новую не хотел создавать, не подскажите в какой системе счисления 3 x 3 = 10? Чёто я никак не могу сообразить, не в восьмеричной случайно?)

MrSTEP 16.02.2011 00:23

Цитата:

Сообщение от FPS (Сообщение 467455)
Извиняюсь, что немного не по теме, новую не хотел создавать, не подскажите в какой системе счисления 3 x 3 = 10? Чёто я никак не могу сообразить, не в восьмеричной случайно?)

Именно в ней.

AlexZir 16.02.2011 06:55

3*3 в десятичной равно 9. Для числа 3 переполнения разряда нет, то есть это допустимое значение разряда. Нужно подобрать такую систему счисления, чтобы было переполнение разряда ровно на 1, то есть, так как полученное значение равно 10 и присутствует перевод 1 в старший разряд, то результат произведения совпадает с основанием системы счисления. Отсюда система счисления имеет основанием число 9. Допустимые значения разряда - 0, 1, 2, 3, 4, 5, 6, 7, 8, переполнение разряда возникает при попытке использовать число 9 и большее.

Ответ - в девятиричной системе счисления.

MrSTEP 16.02.2011 10:01

Да, вот на таких мелочах я вечно заваливаюсь...


Часовой пояс GMT +4, время: 10:50.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.