按正确顺序从十进制转换为二进制 我是C++中的一个完整的NoB,我们必须在学校里做一个程序,计算一个数的和和然后把这个数转换成二进制数。

按正确顺序从十进制转换为二进制 我是C++中的一个完整的NoB,我们必须在学校里做一个程序,计算一个数的和和然后把这个数转换成二进制数。,c++,arrays,C++,Arrays,我现在的问题是二进制数的顺序是相反的。 我想将数字添加到一个数组中,然后从右向左变换数组,但我不知道如何操作:/ 有人能给我解释一下/示范一下怎么做吗 我使用do while循环,因为这是任务的要求 int main() { int digit, sum = 0, rem; cout<<"Enter a positive digit" << endl; cin >> digit; do { sum= sum

我现在的问题是二进制数的顺序是相反的。 我想将数字添加到一个数组中,然后从右向左变换数组,但我不知道如何操作:/

有人能给我解释一下/示范一下怎么做吗

我使用do while循环,因为这是任务的要求

int main()
{
    int digit, sum = 0, rem;

    cout<<"Enter a positive digit" << endl;
    cin >>  digit;

    do {
        sum= sum + (digit%10); 
        digit /= 10;
    }
    while (digit!= 0);

    cout <<"Cross sum" << sum << endl; 

    do {
        rem = sum % 2;
        sum /= 2;
        cout << "Decimal in Binary: " << rem << endl;
    }
    while(sum>0);

    return 0;
}
intmain()
{
整数位数,和=0,rem;

cout此函数将按正确顺序将十进制打印为二进制:

void decToBin(int n) {
    if (n == 0) {
        return;
    }
    decToBin(n / 2);
    cout << n % 2;
}
void decToBin(int n){
如果(n==0){
返回;
}
德克托宾(n/2);

cout此函数将按正确顺序将十进制打印为二进制:

void decToBin(int n) {
    if (n == 0) {
        return;
    }
    decToBin(n / 2);
    cout << n % 2;
}
void decToBin(int n){
如果(n==0){
返回;
}
德克托宾(n/2);

cout
digit
已经是二进制的。这里没有十进制。任何十进制到二进制的转换都已经由
cin>>digit执行;
@user207421如果
为6,OP想要输出“110”,但得到的是“011”-这就是他所说的“二进制”。你也按错误的顺序打印二进制数。一种方法是使用下面代码开始的递归建议。@JonasByström-你说“你也按错误的顺序打印二进制数”是什么意思?二进制数的顺序错误是OP问题的关键。
数字
已经是二进制的。这里没有十进制。任何十进制到二进制的转换都已经由
cin>>数字执行;
@user207421如果
为6,OP想要输出“110”,但得到的是“011”-这就是他所说的“二进制”的意思。你也可以按错误的顺序打印二进制数。一种方法是使用下面code start的递归建议。@JonasByström-你说“你也按错误的顺序打印二进制数”是什么意思?二进制数以错误的顺序出现这一事实是OP问题的关键。您可能希望使用右移
运算符>>
和二进制和
运算符&
。比余数和除法的效率高出许多倍(不过编译器可能会识别模式并进行优化)。您可能希望使用右移
运算符>>
和二进制和
运算符&
。其效率比余数和除法高出许多倍(不过编译器可能会识别模式并进行优化)。