十进制到二进制C++
Decimal to Binary C++
我很清楚关于这个主题有一些重复的问题,尽管我发现每个问题都不能解决我的问题。首先,除了iostream
、iomanip
和string
之外,我不能使用任何特殊的库。所以到目前为止我所拥有的是这个
int DecToBin(int num)
{
int bin = 0;
while (num > 0)
{
bin += (num % 2);
//cout << bin << endl; this is used for debugging purposes
num = num / 2;
}
return bin;
}
我这样称呼它
int binary = DecToBin(170);
cout << binary << endl;
除了我一直得到 0,我相信这是因为我也设置了数据类型。所以我的问题是我如何获得正确的输出?我的结果也应该是
10101010 is base 10 of 170
由于@Cyber的回答在技术上解决了这个问题,我认为解释您的误解并没有什么坏处。您的函数DecToBin
不会将十进制转换为二进制,而是将二进制转换为某种奇怪的二进制格式,该格式打印为十进制会为您提供二进制表示形式。问题是数字已经以二进制格式存储,并且通过转换器(如果您在源代码中使用常量)或io库(如果您使用std::cin
输入)将其转换为二进制。当您使用std::cout
在控制台上打印时,同一库会将其从二进制转换回十进制(默认情况下),这导致了您的想法,该数字以十进制格式存储。
所以从技术上讲,你的解决方案是有效的,但我不确定你的教授会接受它,因为它表明你不理解这个概念(我不会)。正确的解决方案是将 int 转换为二进制字符串,然后将其输出到 std::cout
:
std::string binary( unsigned int n )
{
std::string s;
for( ; n > 0; n /= 2 )
s = std::to_string( n % 2 ) + s;
return s;
}
int main()
{
int n = 170;
std::cout << "binary representation of " << n << " is " << binary( n )
<< std::endl;
}
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 有根的二进制搜索树.保留与其父级的链接
- 多态二进制函数
- 正在读取二进制文件(is_open)
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 二进制搜索树叶数问题
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为什么二进制搜索在我的测试中不起作用
- 重载==不适用于二进制树
- 正在尝试重载二进制搜索树分配运算符
- 在C++中将类(带有Vector成员)保存为二进制文件
- 如何从二进制文件中读取字符串
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 带有数组键C++的二进制映射
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 二进制数之和(使用C样式字符串)
- 如何从dicom文件中读取二进制数据
- 基于编译器选项的编译二进制路径