gpt4 book ai didi

c++ - C++ 将十进制数转换为二进制数

转载 作者:行者123 更新时间:2023-11-28 01:27:31 24 4
gpt4 key购买 nike

此代码查找十进制整数 N 的二进制;它将数字除以 2,取结果的底数并将其也除以 2,
代码获取这些除法 0 或 1 的其余部分并构建二进制文件。

这段代码的问题在于,它直到最后一个除法示例才会运行(取 128 最后一个除法是 1/2 余数是 1,程序停止在 N/2 > 0 在 while 循环和 1/2 = 0 中指定,因为 1 是 int 类型)。

如何解决这个问题或如何修改 while 循环中的条件?

#include <iostream>
using namespace std;
void ConvertToBinary(int N);
int main()
{
int N = 1;
while (1)
{
cout << "enter N: ";
cin >> N;
cout << endl;
ConvertToBinary(N);
cout << endl;
}
system("pause");
return 0;
}
void ConvertToBinary(int N)
{
int A[1000];
int i=0;
cout << "The binary of " << N << "= ";
while (N / 2 > 0)
{
if (N % 2 == 0)
{
A[i] = 0;
}
else if (N % 2 != 0)
{
A[i] = 1;
}
N = N / 2;
i++;
}
for (int j= i-1 ; j>=0 ; j--)
{
cout<<A[j];
}


cout << endl;

}

最佳答案

N 不是“十进制整数”。这是一个数字

如果你真的想谈细节,它已经以二进制形式存储了。

您所说的是表示。当打印到屏幕上时,数字的表示是什么?默认情况下,IOStreams 将以十进制显示数字。

不过,您可以使用 I/O 操纵器来选择十六进制或八进制。伤心there isn't a std::bin yet , 但我们可以使用 std::bitset 来达到同样的目的:

#include <iostream>
#include <iomanip>
#include <bitset>

int main()
{
int x = 42;
std::cout << x << '\n';
std::cout << std::hex << x << '\n';
std::cout << std::oct << x << '\n';
std::cout << std::bitset<sizeof(x)>(x) << '\n';
}

// Output:
// 42
// 2a
// 52
// 1010

( live demo )

而你的整个方法(通过将你的数字更改为另一个数字,当你以十进制表示形式打印它时,这个数字恰好看起来像原始数字的二进制表示 - 呸!)变得过时,解决你的问题毫不费力地解决问题。

关于c++ - C++ 将十进制数转换为二进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53120690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com