为防止广告,目前nocow只有登录用户能够创建新页面。如要创建页面请先登录/注册(新用户需要等待1个小时才能正常使用该功能)。

进制转换

来自NOCOW
跳转到: 导航, 搜索
 这篇文章可以证实是由NOCOW用户原创,不存在任何版权争议。
 本文未注明的内容都使用GFDL版权发布(不包括翻译文章中属于原始所有者的部分版权)。
 如果你添加了一些原文中缺少的非GFDL版权内容,应当标出适当的模板并注明来源,否则可能会被删除

[编辑] 基本方法

n进制转为10进制:设某数(n进制)为A1A2A3……Am

那么转化成的十进制数X=Am*n^(m-1)+Am-1*n^(m-2)+……+A2*n^1+A1*n^0

10进制转为n进制:设某数(10进制)为X

使用短除法,用X除以n写出余数,再将商作为被除数再除以n并取余……最后将每次取得的余数逆向读取,所得的就是转化后的数。

这两种方法也可以扩展到n转m进制,或是m转n进制,只要把后面的计算用m进制高精度数处理即可。但是我们说的10进制,其实是指运算最快的进制(对电脑来说事实上是二进制,输出的时候才会自动转换成10进制)。这时候用上面的组合比较有效率。

[编辑] 参考代码

以下内容使用Nc-by-sa1.png协议发布,你可以在协议限制下随意修改这些内容

如果你愿意重写这部分内容并以GNU FDL协议发布,请把这些内容移动Article:进制转换

不要Nc-by-sa1.png或其他Copyleft协议的内容代替使用GNU FDL协议发布的内容。

把十进制s转换成b进制
PASCAL

    while s<>0 do
    begin
      inc(j);
      k[j]:=s mod b;
      s:=s div b;
    end;

C++

while(s != 0){
    k[j] = s % b;
    s = s / b;
    j++;
}

k[j]记录转换后第j位的数(第1位是个位)


个人工具