А переполнение после imul не тово? Может, лучше таки с сопроцессором :) ? «eax * 3 / 4» (в сишной нотации) было бы надёжнее. (Я уже не говорю про то, что ты не разделил на 0.75, а умножил).
числа ограничиваются, верно. до 11 миллионов. но я знал, что они не превысят это значение, поэтому спокойно использовал.
а использую 384/512, а не 3/4 потому, чтобы убирать младшие разряды, как бы подчищать - мне они не нужны. то есть, округлять нужно было числам, кратным 512. попробуй на сопроцессоре или Си ) сделать это парой команд ))))
> попробуй на сопроцессоре или Си ) сделать это парой команд )))) Не думай, что авторы компиляторов глупее :) «eax * 384 / 512» наверняка сделает то же самое — даже деление произведёт посредством сдвига.
Comments (7):
нечего отмазываться ;)))
ничего. я ещё задачки подкину. .)
(Я уже не говорю про то, что ты не разделил на 0.75, а умножил).
но я знал, что они не превысят это значение, поэтому спокойно использовал.
а использую 384/512, а не 3/4 потому, чтобы убирать младшие разряды, как бы подчищать - мне они не нужны. то есть, округлять нужно было числам, кратным 512.
попробуй на сопроцессоре или Си ) сделать это парой команд ))))
Не думай, что авторы компиляторов глупее :) «eax * 384 / 512» наверняка сделает то же самое — даже деление произведёт посредством сдвига.
5+
а разделить на 1.33333