我的任务是编写一些代码,这些代码将接受用户输入并将数字转换为二进制数。到目前为止,我已经编写了一些代码,但是遇到了一个问题。我必须使用 for 循环和商余数方法。当我输出余数(二进制)时,它没有打印最后一个数字。
我要问的问题是:我必须在 for 循环中进行哪些更改才能打印出二进制数的最后一位?
int main()
{
int num;
int rem;
cout << "Please enter a number: ";
cin >> num;
for (int i = 0; i <= (num + 1); i++)
{
num /= 2;
rem = num % 2;
cout << rem;
}
_getch();
return 0;
}
任何帮助表示赞赏,谢谢!
原文由 Justin Farr 发布,翻译遵循 CC BY-SA 4.0 许可协议
通过将
num
除以 2 开始算法时,您会丢失最后一个二进制数。为避免此问题,您应该交换指令num /= 2;
和rem = num % 2;
您的循环也迭代了太多次:实际上您可以在
num == 0
时停止。以下代码对于 <= 0 的输入无效。如果您想以正确的顺序编写它,您应该首先以 2 为基数计算您的数字的日志。以下解决方案使用一个数字
index
以“1”开头,后面有“0” :