ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
20 мая
79651 Топик полностью
AVR (28.01.2007 11:51, просмотров: 1) ответил Николай Коровин на ...и в мусорке тоже вроде нету... Хых, пропала для человечества чудесная супер-оптимизированная делилка эн на три :-D :-D :-D
То была не делилка, а подчищалка делилки. В порядке возмещения невольно нанесенного ущерба сообщаю парочку супершустрых целочисленных 16-битных делилок Чтобы разделить 16-битное число Х на 3, надо умножить его на Magic Number = 21846 (= 0x5556), и взять старшее слово в качестве результата - это и будет Х/3. На dsPIC/PIC24 - всего 2 такта вместо 20, которые бы ушли на команду DIV. Чтобы разделить 16-битное число Х на 10, надо сначала умножить его на 52429 (= 0xCCCD), а потом сдвинуть старшее слово результата на 3 бита вправо - это и будет Х/10. Для МК с умножителем это просто и быстро - на dsPIC/PIC24 всего 3 такта. Подобные Magic Numbers есть и для других простых делителей