Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.185.34] |
|
Сообщ.
#1
,
|
|
|
Мне тут задачка попалась 2 в сотую степень возвести ...поробовал во так:
Uses crt; Var b8:array[0..12] of byte; t:Integer; Begin b8[12]:=2; asm push ds mov cl,100 lea bx,b8 mov ds,bx mov si,19 shl ds:[si],cl pop ds end; for t:= 0 to 12 do begin write(b8[t]); end; writeln; End. ....не получается может быть логический здвиг с ячейками памяти не работает а? Подскажите плз чё не то ... MishaS |
Сообщ.
#2
,
|
|
|
требуется 13 байт, и установить бит 3 в 1, вот только не знаю как будешь на печать это все выводить
|
Сообщ.
#3
,
|
|
|
Это всё понятно ....шоб в двоичном формате не возиться я ету прогу и написал ..а он стерва не пашет..
|
Сообщ.
#4
,
|
|
|
Пиши условие задачи полностью, я лично ниче не понял , зачем оно надо именно 2 и именно в 100-ю степень, и в каком формате выводить?
Если б даже оно работало как написано (сомневаюся что shl ds:[si],cl сдвинет на 100 бит), то получилось бы нечто такое 00001000 00000000 ... много нулей ... 00000000 00000000 и это все надо преобразовать к десятичной или шестнадцатеричной системе чтоб напечатать |
Сообщ.
#5
,
|
|
|
Вычислять надо по формуле
y^x = 2 ^ (x * log2(y)) Пусть x, y - числа типа integer, z - типа extended, тогда var z: extended; x, y: integer; begin y := 1; x := 100; asm fild y fyl2x fild x fmul st,st(1) f2xm1 fld1 fadd st,st(1) fst z end writeln(z); end. Надеюсь, ничего не напутал! ЗЫ: Как это прекрасно, спустя 8 лет снова писать на Паскале |
Сообщ.
#6
,
|
|
|
Мало того, что с кодом облажался
fild x fild y fyl2x f2xm1 fld1 fadd st,st(1) fst z Да и толку нет от этого кода! На промежуточном этапе число выходит за диапазон Можно втупую сделать: y := 2; x := 100; asm fild y mov cx,x sumloop: fadd sp,sp(0) loop sumloop fst z end |
Сообщ.
#7
,
|
|
|
Буит классно если ето заработает
Пасибо...всем... |