发新话题
打印

10进制转换为2进制c++的实现

面霸应届生求职网欢迎您!

10进制转换为2进制c++的实现

10进制转换为2进制c++的实现  
题目内容
#include
#include
using namespace std;

void translate_integer_helper(double x, vector& r)
{
bool is_put_zero = false;
int i_part = static_cast(x);
for(int i = 0; i< sizeof(int)*8; i++)
{
if(i_part & 1<<(31-i))
{
is_put_zero = true;
r.push_back('1');
}
else
if(is_put_zero)
r.push_back('0');
}
if(r.size()==0) r.push_back('0');
}

void translate_decimal_helper(double x, vector& r)
{
r.push_back('.');
double f_part = x - static_cast(x);

while(!(-0.0001 <= f_part && f_part<= 0.0001))
{
f_part *= 2;
if(1 == int(f_part))
{
r.push_back('1');
f_part -= 1;

}
else
r.push_back('0');
}
}

void translate(double x, vector& r)
{
translate_integer_helper(x, r);
translate_decimal_helper(x, r);
}

void display(const vector& x)
{
bool is_display_zero = false;
for(vector::const_iterator iter = x.begin(); iter!=x.end(); ++iter)
{
if(*iter == '0' && is_display_zero == false) continue;
is_display_zero = true;
cout.put(*iter);
}
}
int main()
{
double a;
cout<<"请输入一十进制数:";
cin>>a;
vector rslt;
translate(a, rslt);
display(rslt);
cout<<"(该数所对应的二进制数)"< }
发新话题