十进制数转换为二进制数的两种方法

下面代码仅供本人复习所用,实用性N低,各位飘过吧~~哈哈:>

//
// 十进制转二进制.
//
 
#include <cstdlib>
#include <iostream>
#include <vector>
 
//
// 使用 unsigned long long 类型数值来表示二进制数,
// 由于这样表示的二进制数位数有限,顾输入参数为 unsigned short 类型.
//
unsigned long long toBinary(unsigned short decimal)
{
    long long binary = 0;
    long long carry = 1;
    while (0 < decimal) {
        binary += decimal % 2 ? carry : 0;
        carry *= 10;
        decimal /= 2;
    }
    return binary;
}
 
//
// 使用向量保存二进制数字符串.
//
void toBinary_vector(unsigned long decimal, std::vector<char> &binary)
{
    while (0 < decimal) {
        binary.push_back(decimal % 2 + '0');
        decimal /= 2;
    }
}
 
//
// 测试.
//
int main(void)
{
    std::cout << "Input decimal number: ";
     
    unsigned short decimal;
    while (!(std::cin >> decimal)) {
        std::cin.sync();
        std::cin.clear();
        std::cout << "Input wrong, please input again: ";
    }
    std::cout << "Binary: " << toBinary(decimal) << std::endl;
     
    std::vector<char> binary;
     
    toBinary_vector(decimal, binary);
    std::vector<char>::iterator beg = binary.begin();
    std::vector<char>::iterator end = binary.end();
    std::cout << "Binary: ";
    while (beg != end--) {
        std::cout << *end;
    }
    std::cout << std::endl;
  
    return EXIT_SUCCESS;
}
posted @   Atypiape  阅读(963)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示