首页 > 解决方案 > 没有数组和二进制运算符的十进制到二进制(如“&”)

问题描述

我必须为大学编写一个将十进制数转换为二进制数的程序的任务。由于我只是在计算机科学的初级课程中,还没有引入数组或按位运算符(如“&”)。该程序只需要使用基本运算符 (+,-,*,%) 和 (if-else,for) 编写。我的方法如下,但我总是得到倒置的值。所以不是 1100, 0011。

#include <iostream>
int main()
{
   int n,a;
   std::cin >> n;
   
   for (int i=n; n>0; --i) {
       
     a = n%2;
     std::cout << a;
     n = n/2;
   
   }

   return 0;
}

有没有办法解决这个问题?

标签: c++

解决方案


如果您知道您只能反向获得正确的输出,请考虑您可以采取哪些措施来解决该问题。只需反转位。这是一种仅使用基本功能的方法。

#include <iostream>
int main()
{
   int n,a;
   int bitCount = 0;
   std::string reversedBits;
   std::cin >> n;
   
   for (int i=n; n>0; --i) {
     a = n % 2;
     reversedBits += a + '0';
     ++bitCount;
     n = n / 2;
   }

   for (int i = bitCount - 1; i >= 0; --i) {
       std::cout << reversedBits[i];
   }

   return 0;
}

这并不是说这是最好的方法。找出解决这个问题的一些方法对你来说是一个很好的练习。


推荐阅读