ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
536071 Топик полностью
vmp (03.08.2014 09:01, просмотров: 127) ответил zeleny на этот знаю ->
Попробуйте тот вариант, что был приведен в письме от Alexandr A. Redchuck по ссылке выше > unsigned short isqrt( unsigned long from) { > unsigned long mask = 0x40000000, sqr = 0, temp; > do { > temp = sqr | mask; > sqr >>= 1; > if( temp <= from ) { > sqr |= mask; > from -= temp; > } > } while( mask >>= 2 ); > // можно дать еще округление if( sqr < from ) ++sqr; > return (unsigned short)sqr; > } Тут для корня из длинного, для корня из 16-битного надо соответственно уменьшить разрядность переменных и начать с маски 0x4000.