C++十进制转二进制33
发布网友
发布时间:2024-02-24 15:11
我来回答
共5个回答
热心网友
时间:2024-04-15 19:46
这个有封装的函数。变通使用即可。
还有就是你现在先存到一个字符串里面。
CString str;
str.MakeReverse()翻转即可。
或者
int iInput=0;
cout<<"\nplease input the num:";
cin>>iInput;
CString csStr;
itoa(iInput,csStr.GetBuffer(20),2/*二进制*/);
cout<<"\nthe binary num is "<<(const char*)csStr<<"\n";
///////
对于一楼的回答,调用递归进行,这个非常的效率有问题,函数的调用开销很多,当数字大一些的时候。即便改成inline的,避免函数调用开销,但是效率依然很低
!
热心网友
时间:2024-04-15 19:47
这种程序结构的话,应该把二进制位保存到一个数组中,然后再逆序输出数组元素。(DEC转BIN的算法是除以2取余数,并将余数倒排)
下面提供一个用bitset实现的程序:
//----------------------------------------------------------------------------
#include <iostream>
#include <bitset>
using namespace std;
void main()
{
int num;
cout<<"///////////十进制→→二进制///////////"<<endl
<<"请输入一个数字:";
cin>>num;
bitset<sizeof(num)> bin_num(num);
cout<<"二进制形式:";
for (int i=bin_num.size()-1;i>=0;i--) cout<<bin_num.at(i);
cout<<endl;
system("pause");
}
//----------------------------------------------------------------------------
热心网友
时间:2024-04-15 19:50
热心网友
时间:2024-04-15 19:52
#include<iostream>
using namespace std;
void fun(int num)
{
if(num)
{
fun(num/2);
cout<<num%2;
}
else
return;
}
void main()
{
int num;
int a;
int b;
cout<<"///////////十进制→→二进制///////////"<<endl
<<"请输入一个数字:";
cin>>num;
cout<<"二进制形式:";
fun(num);
cout<<endl;
system("pause");
}
热心网友
时间:2024-04-15 19:47
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int a,b,c;
string str;
int main()
{
int x;
string s;
cin>>x;
while (x!=0)
{
if (x%2==0)
s='0'+s;
else s='1'+s;
x=floor(x/2);
}
cout<<s;
}