c++ - 没有数组和二进制运算符的十进制到二进制(如“&”)
问题描述
我必须为大学编写一个将十进制数转换为二进制数的程序的任务。由于我只是在计算机科学的初级课程中,还没有引入数组或按位运算符(如“&”)。该程序只需要使用基本运算符 (+,-,*,%) 和 (if-else,for) 编写。我的方法如下,但我总是得到倒置的值。所以不是 1100, 0011。
#include <iostream>
int main()
{
int n,a;
std::cin >> n;
for (int i=n; n>0; --i) {
a = n%2;
std::cout << a;
n = n/2;
}
return 0;
}
有没有办法解决这个问题?
解决方案
如果您知道您只能反向获得正确的输出,请考虑您可以采取哪些措施来解决该问题。只需反转位。这是一种仅使用基本功能的方法。
#include <iostream>
int main()
{
int n,a;
int bitCount = 0;
std::string reversedBits;
std::cin >> n;
for (int i=n; n>0; --i) {
a = n % 2;
reversedBits += a + '0';
++bitCount;
n = n / 2;
}
for (int i = bitCount - 1; i >= 0; --i) {
std::cout << reversedBits[i];
}
return 0;
}
这并不是说这是最好的方法。找出解决这个问题的一些方法对你来说是一个很好的练习。
推荐阅读
- java - 如何在 travis 构建期间使用 gpg2 导入私钥?
- php - 如何使用 .htaccess 文件制作自定义错误页面
- javascript - 有没有办法让页面洞察忽略脚本
- javascript - React Redux bundle.js 被抛出请求
- windows - 为什么 Ansible 找不到系统路径中的可执行文件?
- python - 从python中的列表中减去每个索引处的值
- swift - 是否可以设置 XCUITest 超时?
- javascript - 如何使此请求 API 与 CORS 一起使用?
- python - Paginator DJANGO 页面范围显示
- python - 使用数据框评估表达式