int MathInt_sqrt(unsigned long n) { int root; int m; int left; root = 0; left = (int)n; m = 1 << (sizeof(int) * 8 - 2); do { if (( left & -m ) > root) { root += m; left -= root; root += m; } root >>= 1; } while (m >>= 2); return root; }
int MathInt_sqrt(unsigned long n) { int root; int m; int left; root = 0; left = (int)n; m = 1 << (sizeof(int) * 8 - 2); do { if (( left & -m ) > root) { root += m; left -= root; root += m; } root >>= 1; } while (m >>= 2); return root; }
转载于:https://www.cnblogs.com/wusihdu/p/3625485.html