[an error occurred while processing this directive] [an error occurred while processing this directive]
А по-моему Ваша формула не совсем верна (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Беня 18 января 2002 г. 20:10
В ответ на: Ну, а все же как поделить unsigned на 10, с помощью сдвигов сложения и вычитания(+) отправлено abivan 18 января 2002 г. 19:12

если сложить 1/8 - 1/32 + 1/128 - 1/256 - 1/512 + 1/1024 - 1/2048
то получим не 1/10, а 197/2048
Хотя, таким способом можно получить и 205/2048, что ближе к 1/10
А вообще (мне так кажется) 1/10 нельзя записать точно в двоичном коде - можно только сколь угодно близко приблизиться к 1/10 :
410/4096, 820/8192, ...
Т. е. нужно задаться требуемой точностью и что-то "родить". Еще, наверное, это будет зависеть от разрядности того числа, которое делим. Если оно, например, 8-ми разрядное и делим нацело ( 25/10 = 2) то большая точность и не нужна.

А может просто реализовать обычный алгоритм деления ? (можно делимое сдвинуть на 1 бит вправо, тогда делить придется на 5 (на 3-х разрядную цифру) - может быстрее будет).
А, кстати, что у Вас за задача ?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru