【问题标题】:Why won't my decimal to binary output reverse?为什么我的十进制到二进制输出不会反转?
【发布时间】:2019-05-05 06:18:12
【问题描述】:

我正在使用 while 循环进行一些简单的十进制到二进制转换,我意识到我的循环输出需要反转,我这样做是通过创建一个字符串流然后将我生成的 int 移动到一个字符串流中然后将其转换为字符串,然后反转字符串的顺序以获得正确的二进制值...但是当我实际运行代码时,所有内容前面都有一个随机的 1 或 0...

#include <iostream>
#include <sstream>
#include <algorithm>

int main() {
    std::stringstream ss;
    int decimal;
    int binary;
    std::cout<< "\n Please enter decimal value: ";
    std::cin >> decimal;
    std::cout << "\n The binary equivalent of " << decimal << " is ";
    while(decimal > 0 ) {
        binary = decimal % 2;

        decimal/= 2;

        std::cout << binary;

    }
    ss << binary;
    std::string binary_string = ss.str();
    std::reverse(binary_string.begin(), binary_string.end());
    std::cout << binary_string;
}

例如,如果我输入 11,我会得到:

Please enter decimal value: 11

The binary equivalent of 11 is 11011

12 岁:

Please enter decimal value: 12

The binary equivalent of 12 is 00111

【问题讨论】:

标签: c++ binary decimal


【解决方案1】:

额外的位来自

ss << binary;
string binary_string = ss.str();
reverse(binary_string.begin(), binary_string.end());
cout << binary_string;

在循环之后。 binary 要么包含 1 或 0 并将其转换为字符串并反转它会给你同样的东西。您需要将ss &lt;&lt; binary; 移动到循环中,以便它包含您生成的所有二进制数字。

【讨论】:

    【解决方案2】:

    有两个问题。

    1. ss &lt;&lt; binary 行应该放在循环内

    2. 你应该从循环中删除cout &lt;&lt; binary

    应该是这样的

    int decimal;
    int binary;
    cout<< "\n Please enter decimal value: ";
    cin >> decimal;
    cout << "\n The binary equivalent of " << decimal << " is ";
    while(decimal > 0 ) {
        binary = decimal % 2;
    
        decimal/= 2;
        ss << binary;
    
    }
    
    string binary_string = ss.str();
    reverse(binary_string.begin(), binary_string.end());
    cout << binary_string;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多