page contents

C++编程积累——C++实现十进制与二进制之间的互相转换

C++实现十进制与二进制之间的互相转换

十进制与二进制之间的转换

十进制转换二进制

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

十进制转换二进制

C++实现十进制转换二进制

 主函数main.cpp为:

  1. #include<iostream>
  2. #include<fstream>
  3. #include<string>
  4. #include<vector>
  5. #include<cmath>
  6. using namespace std;
  7. int main()
  8. {
  9. int N;
  10. cout << "Please enter the number: ";
  11. cin >> N;
  12. cout << endl;
  13. //十进制转二进制的声明和调用
  14. void convert_10_to_2(int num);
  15. convert_10_to_2(N);
  16. }

十进制转换为二进制函数为: 

  1. #include<iostream>
  2. #include<fstream>
  3. #include<string>
  4. #include<vector>
  5. #include<cmath>
  6. using namespace std;
  7. void convert_10_to_2(int num)
  8. {
  9. vector<int> ivec;
  10. int Num = num; //存储原数据
  11. //对原数据循环求除以2的余数,并存储在vector对象中
  12. while (num != 0)
  13. {
  14. ivec.push_back(num % 2);
  15. num = num / 2;
  16. }
  17. //对求得的余数倒序排序并存储在vector中,求得二进制
  18. vector<int>::size_type sz = ivec.size();
  19. vector<int> ivec2;
  20. for (vector<int>::size_type index = 0; index != sz; ++index)
  21. ivec2.push_back(ivec[sz - 1 - index]);
  22. //输出十进制转换为二进制的数
  23. cout <<Num << "十进制转二进制后为:";
  24. for (auto item : ivec2)
  25. cout << item;
  26. cout << endl<<endl;
  27. }

运行结果为:

二进制转换十进制

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

二进制转换为十进制

C++实现二进制转换十进制

C++主函数为:

  1. #include<iostream>
  2. #include<fstream>
  3. #include<string>
  4. #include<vector>
  5. #include<cmath>
  6. using namespace std;
  7. int main()
  8. {
  9. double convert_2_to_10();
  10. convert_2_to_10();
  11. return 0;
  12. }

二进制转十进制函数为:

  1. #include<iostream>
  2. #include<fstream>
  3. #include<string>
  4. #include<vector>
  5. using namespace std;
  6. double convert_2_to_10()
  7. {
  8. //输入二进制数并存储在vector变量ivec2中
  9. cout << "Please enter the ErJInZhi numbers: " << endl;
  10. int n;
  11. vector<int> ivec2;
  12. while (cin >> n)
  13. {
  14. ivec2.push_back(n);
  15. }
  16. //二进制转十进制计算
  17. double sum = 0, times;
  18. vector<int>::size_type sz = ivec2.size();
  19. for (vector<int>::size_type index = 0; index != sz; ++index)
  20. {
  21. times = pow(2, sz - 1 - index);
  22. sum += ivec2[index] * times;
  23. }
  24. //输出转化后的结果
  25. cout << "2进制——";
  26. for (vector<int>::size_type index = 0; index != sz; ++index)
  27. cout << ivec2[index];
  28. cout << "转10进制为: ";
  29. cout << sum << endl;
  30. return 0;
  31. }

运行结果:(输入二进制时要以空格区分)

  • 发表于 2020-12-11 10:23
  • 阅读 ( 981 )
  • 分类:C/C++开发

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章