【问题标题】:C++ program for converting decimal to binary用于将十进制转换为二进制的 C++ 程序
【发布时间】:2020-09-02 06:01:23
【问题描述】:

我需要编写一个方法来传递两个整数 i1 和 i2 并返回在其二进制表示中具有更多 1 的数字。

【问题讨论】:

  • 请记住,“十进制”和“二进制”指的是如何将值写入文本。所以将十进制转换为二进制意味着将text 转换为textint 值不是十进制或二进制;它是int。您可以将其转换为十进制表示的文本(例如 128),也可以将其转换为二进制表示的文本 (10000000)。

标签: c++


【解决方案1】:

这个帖子应该可以帮助您获得二进制表示 C++ - Decimal to binary converting 稍后使用您的二进制数组,您可以使用

#include <numeric>
std::accumulate(binaryArr, binaryArr + sizeof(binaryArr)/sizeof(binaryArr[0]), 0);

计算个数。 此外,这看起来真的像为我解决我的家庭作业类型的问题,尝试自己研究和解决问题,然后用一些代码示例询问你的问题。这样你就真的学会了

【讨论】:

  • 该链接中的代码是可怕的(包括未定义的行为,所以所有的赌注都关闭了)。而且它不会将十进制转换为二进制;它将int 值转换为二进制表示。从十进制到int 的转换发生在流提取器std::cin &gt;&gt; a1; 中。
  • 是的,但是 anwsers 提供了一个不错的代码,他的任务是计算代码,所以我认为表示就足够了
【解决方案2】:

首先你应该想办法找出有多少个包含数字(count_ones_binary函数),然后你就用这个函数来解决你的问题

#include <iostream>

int count_ones_binary(int x)
{
    int res = 0;
    while (x != 0)
    {
        if (x % 2 != 0)
            res++;
        x /= 2;
    }
    return res;
}

void more_ones_binary(int i1, int i2)
{
    int count_i1 = count_ones_binary(i1);
    int count_i2 = count_ones_binary(i2);
    if (count_i1 > count_i2)
        std::cout << "i1 have more ones\n";
    else if (count_i1 < count_i2)
        std::cout << "i2 have more ones\n";
    else std::cout << "equal\n";
}

【讨论】:

  • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 2017-07-19
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
相关资源
最近更新 更多