【发布时间】:2021-01-17 13:56:21
【问题描述】:
我的任务是将十进制数转换为二进制,但由于我们是编程初学者,因此我不允许使用数组、函数等。仅用于 if 和基本操作。
我的代码是:
#include <iostream>
int main()
{
int n;
int b;
std::cin >> n;
for (int i=n; n>0; --i) {
b = n%2;
std::cout << b;
n = n/2;
}
return 0;
}
它有效,但它以错误的顺序给了我二进制数,例如它是 0001 代表 4 而不是 1000。有人可以帮帮我吗?
【问题讨论】:
-
了解您的循环的作用。考虑学习如何使用调试器来探索为什么会偏离您的预期。这是一个非常方便的工具!您的循环基本上打印出正确的二进制表示,但顺序相反。如果没有数组(可以反向打印),你怎么能解决这个问题?我会让你考虑一段时间......
-
假设
int是 32 位(仍然是一个合理的假设)开始打印数字的第 32 位。然后是第 31 位。依此类推,一直到第 1 位。使用移位和掩码来获取位。 -
我不知道你想说什么。也许我可以将循环更改为 i=1;我
-
我的问题是我的输出不应该输出前导零...
-
我已将您的问题恢复为其他人已回答的问题。通过更改问题使现有答案无效是不礼貌的。如果您有后续问题,请针对它提出一个新 问题(但也许先尝试该调试器建议)。
标签: c++