c++二进制转十进制_日积月累:C++实现十进制与二进制之间的互相转换

27248e0a-4213-eb11-8da9-e4434bdf6706.gif

29248e0a-4213-eb11-8da9-e4434bdf6706.jpeg

1、十进制转换二进制

十进制对2整除,得到的余数的倒序即为转换而成的二进制

2e248e0a-4213-eb11-8da9-e4434bdf6706.jpeg

(十进制转换二进制示意图)

转换函数

#include#include#include#include#includeusing namespace std;void convert_10_to_2(int num){    vector<int> ivec;    int Num = num;  //存储原数据    //对原数据循环求除以2的余数,并存储在vector对象中    while (num != 0)    {        ivec.push_back(num % 2);        num = num / 2;    }     //对求得的余数倒序排序并存储在vector中,求得二进制    vector<int>::size_type sz = ivec.size();    vector<int> ivec2;    for (vector<int>::size_type index = 0; index != sz; ++index)        ivec2.push_back(ivec[sz - 1 - index]);     //输出十进制转换为二进制的数    cout <"十进制转二进制后为:";    for (auto item : ivec2)        cout << item;    cout << endl<<endl;}

主函数调用

#include#include#include#include#includeusing namespace std;int main(){        int N;    cout << "Please enter the number: ";    cin >> N;    cout << endl;     //十进制转二进制的声明和调用    void  convert_10_to_2(int num);    convert_10_to_2(N);}

运行结果

2f248e0a-4213-eb11-8da9-e4434bdf6706.png

2、二进制转换十进制

将二进制从右往左从零次幂开始乘以二进制数并求和

30248e0a-4213-eb11-8da9-e4434bdf6706.png

(二进制转换十进制示意图)

转换函数

#include#include#include#includeusing namespace std;double convert_2_to_10(){    //输入二进制数并存储在vector变量ivec2中    cout << "Please enter the ErJInZhi numbers:  " << endl;    int n;    vector<int> ivec2;    while (cin >> n)    {        ivec2.push_back(n);    }     //二进制转十进制计算    double sum = 0, times;    vector<int>::size_type sz = ivec2.size();    for (vector<int>::size_type index = 0; index != sz; ++index)    {        times = pow(2, sz - 1 - index);        sum += ivec2[index] * times;    }     //输出转化后的结果    cout << "2进制——";    for (vector<int>::size_type index = 0; index != sz; ++index)        cout << ivec2[index];    cout << "转10进制为:";    cout << sum << endl;    return 0;}

主函数调用

#include#include#include#include#includeusing namespace std;int main(){    double convert_2_to_10();    convert_2_to_10();    return 0;}

运行结果

(输入二进制时要以空格区分)

33248e0a-4213-eb11-8da9-e4434bdf6706.png

35248e0a-4213-eb11-8da9-e4434bdf6706.jpeg

添加涵爸微信,共同交流

38248e0a-4213-eb11-8da9-e4434bdf6706.jpeg

~关于涵爸的介绍

标签一:奶爸(这是我最自豪的,没有之一)

8年奶爸生涯刚结束

新一轮奶爸生涯又开始

小二宝悄悄降临

笑声不断,欢乐无穷

标签二:编程高手(这是我给自己封的,有待认可)

才疏学浅,短见薄识

软件开发只有10多年的经验

掌握的C++和Java技能还不够出神入化

前端HTML、CSS、JS的娴熟度也不足百分

大数据、云计算、人工智能等也只略知一二

虚心万事能成,自满十事九空

涵爸愿虚心学习

不辜负此“高手”二字

标签三:老师(这是自己未来的定位,还需努力)

孩子的教育大于一切

于是我放弃了高薪

编程的普及大势所趋

于是我趟了这趟浑水

能力一般,水平有限

涵爸定当全力以赴

为大家分享最优质的信息

做出最专业的课堂

关注涵爸了解更多少儿编程知识。

3a248e0a-4213-eb11-8da9-e4434bdf6706.jpeg

3c248e0a-4213-eb11-8da9-e4434bdf6706.jpeg

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值