当前位置:编程学习 > C/C++ >>

10进制数转二进制表示

本篇是用算法自己实现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的情况。
 
显然这个程序还需要修改。
 
 
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,