在我机器上小数和整数运算相差 200倍我想知道 Sqr(X)函数如何用整数方式表达..
解决方案 »
- 请问vb如何实现像超级兔子一样的自动更新,谢谢
- 谁帮我看下,哪里出错啦,怎么得不到所要的结果
- VB调用VC的myDll.DLL时出现“调用约定错误”?请问在VB中如何定义VC的DLL中的函数参数指针做?VC的myDll.DL的函数如下L如下:
- 关于水晶报表9的问题,
- 一个条码枪扫描的程序,请各位帮帮忙!重谢!!!
- 请问在picturebox画线时,当画到picturebox框底时,能否使其具有象VScrollbar一样的作用???
- 用了ActiveBar就不能用imagelist?200分!
- 怎么都在一行上啊?为什么vbcrlf没有用啦?
- 帮帮忙啊!!!SQL语句问题
- ado的问题 一定给分 不够还有
- Textbox 在win2000下与粘贴来自Excel的中文字,再复制回去就出现乱码?
- 如何打开有密码的ACCESS2000数据库。连接语句该怎样写?
??????不懂你的意思
/*Function: 开根号处理 */
/*入口参数:被开方数,长整型 */
/*出口参数:开方结果,整型 */
/****************************************/
unsigned int sqrt_16(unsigned long M)
{
unsigned int N, i;
unsigned long tmp, ttp; // 结果、循环计数
if (M == 0) // 被开方数,开方结果也为0
return 0; N = 0; tmp = (M >> 30); // 获取最高位:B[m-1]
M <<= 2;
if (tmp > 1) // 最高位为1
{
N ++; // 结果当前位为1,否则为默认的0
tmp -= N;
} for (i=15; i>0; i--) // 求剩余的15位
{
N <<= 1; // 左移一位 tmp <<= 2;
tmp += (M >> 30); // 假设 ttp = N;
ttp = (ttp<<1)+1; M <<= 2;
if (tmp >= ttp) // 假设成立
{
tmp -= ttp;
N ++;
} } return N;
}
Public Function sqrt_16(ByVal M As Long) As Long
Call Init
'{
' unsigned int N, i;
Dim N As Long, I As Long
' unsigned Long tmp, ttp; // 结果、循环计数
Dim tmp As Long, ttp As Long
' if (M == 0) // 被开方数,开方结果也为0
If M = 0 Then
sqrt_16 = 0
Exit Function
' return 0;
End If
'
' N = 0;
N = 0
'
' tmp = (M >> 30); // 获取最高位:B[m-1]
tmp = RShift(M, 30)
' M <<= 2;
M = LShift(M, 2)
' if (tmp > 1) // 最高位为1
If tmp > 1 Then
' {
' N ++; // 结果当前位为1,否则为默认的0
N = N + 1
' tmp -= N;
tmp = tmp - N
' }
End If
'
' for (i=15; i>0; i--) // 求剩余的15位
For I = 15 To 1 Step -1
' {
' N <<= 1; // 左移一位
N = LShift(N, 1)
'
' tmp <<= 2;
tmp = LShift(tmp, 2)
' tmp += (M >> 30); // 假设
tmp = tmp + RShift(M, 30)
'
' ttp = N;
ttp = N
' ttp = (ttp<<1)+1;
ttp = LShift(ttp, 1) + 1
'
' M <<= 2;
M = LShift(M, 2)
' if (tmp >= ttp) // 假设成立
If tmp > ttp Then
' {
' tmp -= ttp;
tmp = tmp - ttp
' N ++;
N = N + 1
' }
End If
'
' }
Next
'
' return N;
sqrt_16 = N + 1
'}
End Function其中的左移位LShift和右移位函数可以去网上搜索一下MD5,记得MD5算法里也有移位操作的
记得当年中学老师曾经教过笔算开平方方法,或者你可以试一下^_^
http://member.21maths.com/zxkt/chu2/2/1.1-3.asp