【问题标题】:how to store value from decimal to binary in such a way that it save value in 6 places in c++如何将值从十进制存储到二进制,以便在 C++ 中将值保存在 6 个位置
【发布时间】:2020-01-05 04:24:47
【问题描述】:

我必须将值从 1 转换为 63(十进制到二进制),以便将其存储在表中的 6 位。 例如,如果我输入 2 它会将其转换为二进制: 10 ,但我希望它显示在 6 位,例如 000010。并将其存储在一个表中。 我找不到将十进制转换为二进制并显示 6 个位置的代码。我应该怎么做...??

#include <iostream> 

using namespace std;  

int main()  
{  
   int a[10], n, i;    
   cout<<"Enter the number to convert: ";    
   cin>>n;    
   for(i=0; n>0; i++)    
   {    
      a[i]=n%2;    
      n= n/2;  
   }    
   cout<<"Binary of the given number= ";    
   for(i=i-1 ;i>=0 ;i--)    
   {    
      cout<<a[i];    
   }    
} 

我试过这个,但我把它转换成指定的位,比如在 10 中转换 2,在 11 中转换 3,和其他的一样,但我想把它转换成 3=000011。

【问题讨论】:

  • 您可以稍微修改一下现有代码。你明白每一行代码在做什么吗?
  • 假设您知道您有 2 位数字。并且您想在左侧填充零,总共 6 个。因此,您必须输出 6-2=4 个前导零...
  • 我格式化了你的代码:“缩进”很好。更常见的方法是使用&gt;&gt;&amp; 而不是%/。但是您的算法应该可以完成工作。您所要做的就是进一步考虑在转换为二进制之前和之后您要做什么:)

标签: c++ binary decimal


【解决方案1】:

所以解决问题的一种方法是:首先,用零初始化 6 个元素的数组...

你也不必使用 10 的数组,因为你清楚地提到数字是 1 到 63

int a[6], n, i;

所以你可以在你的输入之前添加这个

    for (i = 0; i < 6; i++) {
        a[i] = 0;
    }

现在你运行的循环对我作为程序员来说没有多大意义,虽然我知道它是正确的...因为条件是 n 但增量是 @ 987654324@。所以我会这样改变它

    while (n > 0) {
        a[i] = n % 2;
        n = n / 2;
        i++;
    }

并将i-1 更改为 5(或 MAX_CAP - 1;其中 MAX_CAP 为 6)

for(i=5 ;i>=0 ;i--)    
   {    
      cout<<a[i];    
   }  

但根据我的说法,你应该使用 vectors 而不是数组来摆脱初始化

vector<int> a(6,0);

【讨论】:

    猜你喜欢
    • 2010-12-15
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多