|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Sashka Yackubtchick 2:5054/29.54 22 Nov 2001 21:53:42 To : Sergey Martianov Subject : Арифметика,признак делимости. -------------------------------------------------------------------------------- 20 Nov 01 02:22, Sergey Martianov писАл(а) к All: SM> Hi, All! SM> 2,4,8,3,9,6,5,25,10,100,1000,11. SM> Интеpесуют пpизнаки делимости на дpугие свеpх вышепеpечисленных. Если говорить о компьютерных методах то очень быстрым и простым является определение кратности любым степеням двойки с помощью AND где число ANDится с числом в котором выставлены только младшие биты (подряд) в колличестве = степени двойки на кратность которой мы проверяем. Если результат = 0 то число кратно Hапример (b - означает число в двоичном представлении test анолог and без записи результата в операнд); if число test 1b = 0 then оно кратно 2^1 (или двойке) if число test 11b = 0 then оно кратно 2^2 (или четверке) if число test 11111111b = 0 then оно кратно 2^8 (256) Соответсвенно ясно, что число кратное любой степени двойки будет кратно двойке и её меньшей чем текущая степени. Поэтому достаточно найти (просканировать) 1ый младший выставленный бит и порядковый номер этого бита (от нуля по тому что если мы биты считали от единицы то найденый бит указал бы как раз ту степень двойки на которую число уже не делится) укажет какой максимально степени двойки кратно число (в том числе и если оно кратно лишь 2^0 (то есть 1му) Hапример для i386 команда bsf ищет от младших к страшим первый выставленый бит поэтому если eax число то bsf ecx,eax в ecx оказывается порядковый номер бита потому как все биты до бита представляющего кратную степень двойки будут равны нулю (в противном случае будет остаток при делении на эту степень двойки) если в ecx окажется 5 то число кратно 2^5 и конечно же 2^4,2^3,2^2..2^0 Пока! Sashka, The Svin. --- GoldED/W32 3.00.Beta1+ * Origin: Svin, Perm, Russia (2:5054/29.54) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/33843bfd6cbc.html, оценка из 5, голосов 10
|