visual在c++中将十进制数转换为二进制数
visual Converting a decimal number to binary in c++
此代码查找十进制整数N的二进制值;它将数字除以2,得到结果的底部,并将其除以2,
代码得到这些除法的余数0或1,并构建二进制。
这个代码的问题是,它要到最后一个除法示例才能运行(以128为例,最后的除法是1/2,余数是1,程序在while循环中指定的N/2 > 0
和1/2 = 0
处停止,因为1是int类型(。
如何解决此问题,或者如何修改while循环中的条件?
#include <iostream>
using namespace std;
void ConvertToBinary(int N);
int main()
{
int N = 1;
while (1)
{
cout << "enter N: ";
cin >> N;
cout << endl;
ConvertToBinary(N);
cout << endl;
}
system("pause");
return 0;
}
void ConvertToBinary(int N)
{
int A[1000];
int i=0;
cout << "The binary of " << N << "= ";
while (N / 2 > 0)
{
if (N % 2 == 0)
{
A[i] = 0;
}
else if (N % 2 != 0)
{
A[i] = 1;
}
N = N / 2;
i++;
}
for (int j= i-1 ; j>=0 ; j--)
{
cout<<A[j];
}
cout << endl;
}
N
不是"十进制整数"。这是一个数字。
如果你真的想谈谈细节,它已经存储在二进制文件中了。
您所说的是表示。当打印到屏幕上时,数字的表示是什么?IOStreams默认情况下会以十进制形式显示数字。
不过,您可以使用I/O操纵器来选择十六进制或八进制。遗憾的是,目前还没有std::bin
,但我们可以将std::bitset
用于相同的目的:
#include <iostream>
#include <iomanip>
#include <bitset>
int main()
{
int x = 42;
std::cout << x << 'n';
std::cout << std::hex << x << 'n';
std::cout << std::oct << x << 'n';
std::cout << std::bitset<sizeof(x)>(x) << 'n';
}
// Output:
// 42
// 2a
// 52
// 1010
(现场演示(
您的整个方法(通过将您的数字更改为另一个数字来"伪造"表示法转换,当您以十进制表示打印时,该数字恰好看起来像原始数字的二进制表示—phew!(变得过时了,可以毫不费力地解决问题。
相关文章:
- visual在c++中将十进制数转换为二进制数
- 二进制数之和(使用C样式字符串)
- 以 10 c++ 为基数显示 1024 位二进制数
- 二进制数和位标志'x'
- C++ 二进制数到整数值的数组
- 二进制数组中最大连续 1 的起始和结束索引,以 C++ 为单位
- dev如何在C++中比较二进制数
- Pybind11:在C++中使用Pybind11转换numpy数组的问题
- 递归回溯打印长度为N的二进制数的所有组合,而不使用循环
- 向后打印二进制数
- 使用位黑客反转二进制数
- 添加两个二进制数(整数数组)
- 从 0 到 n 的二进制数,具有相同数量的字符/
- 我通过迭代加法将二进制数转换为十进制并检查单个字符(请参阅代码)的方法有什么问题?
- 所有测试用例都将小数点转换为二进制数
- 尝试将二进制数组转换为十六进制C++然后打印结果
- 如何缩放二进制数组以保留值
- 使用堆栈将十进制数转换为二进制数
- C++ 将二进制数组强制转换为类
- 如何将小数数组转换为二进制数数组