Помощь - Поиск - Пользователи - Календарь
Полная версия: Dec --> Bin
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
EDG
Здравствуйте, подобная тему уже обсуждалась год назад, но у меня другой вопрос. В FAQ'е есть программа перевода из одной с\с в другую, но та программа к сожалению переводит из десятичной в двоичную с\с только интервал чисел 1..1023. Я написал свою которая может переводить из десятичной в двоичную с\с интервал чисел 1..2047.... а дальше идёт чушь wacko.gif :
при переводе 2047 получается 11111111111, а при переводе 2048 --> 100000000010
2049 --> 100000000010
2050 --> 100000000020
2051 --> 100000000020

Program proga;
var x,st: longint;
b: real;
begin
read(x);
st:=0;
b:=0;
Repeat
b:=b+((x mod 2)*exp(st*ln(10)));
st:=st+1;
x:=x div 2;
Until x=0;

writeln(b:2:0);
end.


Помогите пожалуйста разобраться, в чём проблема?
Malice
Поменяй тип переменной b c real на extended, там мантисса побольше.
EDG
Цитата(Malice @ 30.12.2006 20:29) *

Поменяй тип переменной b c real на extended, там мантисса побольше.

Пробовал уже, пишется ошибка "Must be in 8087 mode to compile this." Что это? Пишет после b:=0, когда убираю эту строку, таже ошибка пишется после следующей =(
Malice

Маленький кубик
EDG
Молодец Malice! good.gif Спасибо большое! Интервал чисел увеличился как минимум в 2 раза smile.gif Мне этого хватит))
Bokul
Вот, что находилось по моей ссылке:
Цитата

Эмуляция сопроцессора
Очень часто у многих возникает вопрос - почему при компиляции у меня возникает ошибка Error 116: Must be in 8087 mode to compile this.
Ответ: Вы используете один из следующих вещественных типов:
Single, Double, Extended, Comp
Для работы с этими типами, необходима эмуляция сопроцессора. Просто добавьте в начало программы директивы:
{$E+, $N+}

EDG
И тебе спасибо, я видел, только не помогло =( Я написал {$E+, $N+} а оно распозналось просто как коментарий и всё =(

--------------------------

Ой, извиняюсь, всё даже намного лучше, просто нада было написать {$E+,N+}, а не {$E+,$N+}
Спасиб тебе))
Bokul
Надо так:

{$E+} {$N+}

EDG
Цитата(Bokul @ 30.12.2006 21:57) *

Надо так:

{$E+} {$N+}




ОК good.gif yes2.gif
Теперь интервал составляет 1..262144 o_O Дальше просто некуда :D И мне не надо)) Вот так если нужно больше, тут уже нужно в массив запись нулей и единиц вести.
UksusoFF
Народ, а как можно записывать в двоичной системе действительное счисления число, имеющее не более 50 цифр в десятичной записи? Используя Динамические массивы. чего то я не нашел... помогите пожалуста новичку blink.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.