Цитата(singlskv @ Dec 13 2008, 23:33)

-итого: 50<= A < 53
то есть нам подойдут 50, 51, 52
выбор чисел 0, 9, 10, 250, 255 надеюсь понятен
Действительно, простой расчет

.
Но A = [50..52] (как и приведенная мной формула, где А=51)- это для случая деления с отбрасыванием дробной части, т.е для выражения X div 10.
Для деления с округлением, воспользовавшись Вашей методикой, получаем
1.) 0 * 51 +A >= 0
2.) 4 * 51 +A < 1 * 512
3.) 5 * 51 + A >= 1 * 512
4.)254 * 51 + A < 26 * 512
5.)255 * 51 + A >= 26 * 512
- преобразуем
1.) A >= 0
2.) A < 308
3.) A >= 257
4.) A <358
5.) A >= 307
Откуда A = 307.
P.S. Существуют ли алгоритмы для быстрого получения остатка от деления на 10, 100 (кроме варианта X - (X div 10)*10 )?
Цитата
Вместо
((x*51) + 51/2) >> 9 ~= ((x*51)+26)>>9
читать
((x*51) + 1<<8) >> 9 = (x*51)>>9 + 0.5
Здесь A = 1<<8 = 512. При x=11 получаем в результате 2.