频道栏目
首页 > 程序开发 > 软件开发 > C++ > 正文
10进制数转二进制表示
2013-01-20 13:00:00           
收藏   我要投稿
本篇是用算法自己实现10进制整数转换成二进制数。注意,这里是研究的一般的二进制转换规律,不一定所有系统一定是这样表示的。

逻辑上,如果将10进制数5用一个字节表示,应该是101,你可以通过000开始不断加1,得到这个数。但是实际上一般都采用除法计算。

5 / 2 

   得到商为 2 余数为1

用商2 / 2,

   得到商为1 余数为0

用商1 / 2

   得到商为0 余数为1

 

逆序将余数(最后得到的余数放在高位)连在一起就是 101.

这个算法用递归可以实现:

[cpp] 

// Convert decimal integer in one byte to binary format string  

string ByteToBinaryString(char v) {  

    if (v == 1) {  

        return "1";   

    }  

      

    if (v % 2 == 0) {  

        return ByteToBinaryString(v / 2) + "0";  

    } else {  

        return ByteToBinaryString(v / 2) + "1";  

    }  

}  

ByteToBinalyString实现存储在一个字节中的10进制整数转换成二进制表达的字符串的功能。

每次调用ByteToBinalyString,都先计算自己除以2的商和余数,用商继续递归调用自己。将余数接在下一个递归函数的返回值的后面,这样就实现了逆序。

出口在商为1的时候,这时候再用1调用自己时,直接返回“1”。

测试了一下,基本上在正数的时候没问题,如果是0呢,出现了错误。因为递归变成了无限,没有出口。所以还要加点代码,保证直接传递0为参数时,程序也能正常工作。

[cpp] 

// Convert decimal integer in one byte to binary format string  

string ByteToBinaryString(char v) {  

    if (v == 1) {  

        return "1";   

    }  

      

    if (v == 0) {  

        return "0";  

    }  

      

    if (v % 2 == 0) {  

        return ByteToBinaryString(v / 2) + "0";  

    } else {  

        return ByteToBinaryString(v / 2) + "1";  

    }  

}  

 

现在考虑char的值小于0的情况。

 

显然这个程序还需要修改。

 

 

点击复制链接 与好友分享!回本站首页
相关TAG标签 进制 二进制
上一篇:杭电OJ——1283 最简单的计算机
下一篇:AMPS:单向链表源码解读
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站