vb进制转换函数 看不明白 望赐教

来源:百度知道 编辑:UC知道 时间:2024/05/13 19:31:09
代码如下:
public function f(byval n%,byval r%)
if n<>0 then
f=f(n\r,r)
print n mod r;
end if
private sub command1_click()
print f(100,8)
end sub
我还是不太懂 那这个函数到底怎么运行 144

r为权值,如二进制r=2;如十进制r=10;如十六进制r=F(16)... 该方法使用连除取余来获得各权位上的值(该方法默认n为十进制数,因为\"\\\",\"mod\"是用于十进制的操作符。)。

连除取余举例:
输入n:n=a1*r^0+a2*r^1+a3*r^2+a4*r^3//a1-a4均小于r
f(n,r)进入递归第一级
n=n/r=a1/r+a2+a3*r^1+a4*r^2
//a1/r被舍f(a2+a3*r^1+a4*r^2,r)进入递归下一级
...
递归的最后一级n=a4/r=0,返回上一级。
...
n/(r^3)=a4//递归的倒数第二级,a1-a3部分因为小于一而被截去。print n mod r; 使得该最高位输出。
返回递归上一级print n mod r; 输出次高位。
...
返回递归第一级print n mod r; 输出最低位。
完成返回。

100=0*8^0 + 4*8^1 + 1*8^2故输出140

比如要在某事件中在窗体输出某十进制数的八进制表示,则写:
f(某十进制数,8);
于是在执行该事件(除了Form_Load事件)后你就看到窗体左上角显示该十进制数的八进制表示。你可以在按钮的单击事件(如command1_click)中加该句,看看效果。