c++ - 为什么我的十进制到二进制输出不会反转?
问题描述
我正在使用while循环进行一些简单的十进制到二进制转换,我意识到我的循环输出需要反转,我通过创建一个stringstream然后将我生成的int移动到一个stringstream中,然后将它转换为一个字符串,然后反转字符串的顺序以获得正确的二进制值......但是当我实际运行代码时,所有内容前面都有一个随机的 1 或 0 ......
#include <iostream>
#include <sstream>
#include <algorithm>
int main() {
std::stringstream ss;
int decimal;
int binary;
std::cout<< "\n Please enter decimal value: ";
std::cin >> decimal;
std::cout << "\n The binary equivalent of " << decimal << " is ";
while(decimal > 0 ) {
binary = decimal % 2;
decimal/= 2;
std::cout << binary;
}
ss << binary;
std::string binary_string = ss.str();
std::reverse(binary_string.begin(), binary_string.end());
std::cout << binary_string;
}
例如,如果我输入 11,我会得到:
Please enter decimal value: 11
The binary equivalent of 11 is 11011
对于 12:
Please enter decimal value: 12
The binary equivalent of 12 is 00111
解决方案
有两个问题。
该行
ss << binary
应放在循环内您应该
cout << binary
从循环中删除
它看起来像那样
int decimal;
int binary;
cout<< "\n Please enter decimal value: ";
cin >> decimal;
cout << "\n The binary equivalent of " << decimal << " is ";
while(decimal > 0 ) {
binary = decimal % 2;
decimal/= 2;
ss << binary;
}
string binary_string = ss.str();
reverse(binary_string.begin(), binary_string.end());
cout << binary_string;
}
推荐阅读
- xml - 我无法编写正确的 Xpath 条件来获取 DOM4J 中的节点以执行教育任务;dasd2312 dsad213esada2 ddaasdas
- javascript - 模板参数推导中的 TypeScript 差异 - 类型交集与扩展类型
- javascript - 首先在 Firebase 中订购新帖子
- javascript - React 组件未在地图循环内加载
- python - 将一列拆分并编码为 n 列,包含 0 和 1
- html - 顶部的背景颜色和 svg 渐变将 svg 带到 fornt
- python - 计算曲线内的面积
- java - 角度从 POST 响应中获取字符串
- python - Python:使用参考列表的一种热编码
- git - 防止 Git Push live master 更改文件权限和所有权