c++将小数化为二进制_C++版进制转换(十进制,二进制,十六进制整数和小数)

该博客提供了一种C++实现的方法,用于将十进制的小数转换为二进制,同时也支持整数和小数之间的多种进制转换,包括10->2、2->10、16->2、2->16、10->16和16->10。通过示例代码详细展示了如何进行这些转换操作。
摘要由CSDN通过智能技术生成

#include&ltiostream&gt

#include&ltconio.h&gt

#include&ltstdlib.h&gt

#include&ltstring&gt

using namespace std;

void MainMenu()

{

system("cls");

for(int i=0;i&lt24;i++) cout&lt&lt"=";

printf("\n1. 10-&gt2\n2. 2-&gt10\n3. 16-&gt2\n4. 2-&gt16\n5. 10-&gt16\n6. 16-&gt10\n7. Exit\n");

for(i=0;i&lt24;i++) cout&lt&lt"=";

}

void mission1()

{system("cls");

double x,bb;

int i,aa,n,m,p[100],q[100];

cout&lt&lt"输入一个十进制数:";

cin&gt&gtx;

aa=(int)x;

if(x-aa==0)

{i=0;

while(aa){

p[i]=(int)(aa%2);

aa=aa/2;

i++;

}

cout&lt&lt"转化的二进制数为:";

n=i;

for(i=n-1;i&gt=0;i--) cout&lt&ltp[i];

cout&lt&ltendl;

}

else

{bb=x-aa;

i=0;

while(aa)

{p[i]=(int)(aa%2);

aa=aa/2;

i++;

}

n=i;

i=0;

while(bb)

{q[i]=(int)(bb*2);

bb=bb*2-q[i];

i++;

}

m=i;

cout&lt&lt"转化的二进制数为:";

for(i=n-1;i&gt=0;i--) cout&lt&ltp[i];

cout&lt&lt".";

for(i=0;i&ltm;i++) cout&lt&ltq[i];

cout&lt&ltendl;;

}

}

void mission2()

{system("cls");

int i,j,n;

double k,sum=0;

string str;

cout&lt&lt"输入一个二进制数:";

cin&gt&gtstr;

i=0;

while(i&ltstr.size()&&str[i]!='.') i++;

n=i;

//cout&lt&ltn&lt&lt","&lt&ltstr.size()&lt&ltendl;

if(n==str.size())

{j=1;

for(i=n-1;i&gt=0;i--)

{ sum+=(str[i]-'0')*j;

j*=2;

}

cout&lt&lt"转化的十进制数为:"&lt&ltsum&lt&ltendl;

}

else if(n&ltstr.size())

{j=1;

for(i=n-1;i&gt=0;i--)

{sum+=(str[i]-'0')*j;

j*=2;

}

k=1.0/2;

for(i=n+1;i&ltstr.size();i++)

{sum+=(str[i]-'0')*k;

k*=1.0/2;

}

cout&lt&lt"转化的十进制数为:"&lt&ltsum&lt&ltendl;

}

}

void A1(char c)

{if(c=='0') cout&lt&lt"0000";

else if(c=='1') cout&lt&lt"0001";

else if(c=='2') cout&lt&lt"0010";

else if(c=='3') cout&lt&lt"0011";

else if(c=='4') cout&lt&lt"0100";

else if(c=='5') cout&lt&lt"0101";

else if(c=='6') cout&lt&lt"0110";

else if(c=='7') cout&lt&lt"0111";

else if(c=='8') cout&lt&lt"1000";

else if(c=='9') cout&lt&lt"1001";

else if(c=='A') cout&lt&lt"1010";

else if(c=='B') cout&lt&lt"1011";

else if(c=='C') cout&lt&lt"1100";

else if(c=='D') cout&lt&lt"1101";

else if(c=='E') cout&lt&lt"1110";

else if(c=='F') cout&lt&lt"1111";

else cout&lt&lt"error!";

}

void A(string s)

{int i,m,n;

n=s.length();

i=0;

while(i&ltn&&s[i]!='.') i++;

m=i;

for(i=0;i&ltm;i++)

A1(s[i]);

if(m&ltn)

{cout&lt&lt".";

for(i=m+1;i&ltn;i++)

A1(s[i]);

}

cout&lt&ltendl;

}

void mission3()

{system("cls");

string str;

cout&lt&lt"输入一个十六进制数:0X";

cin&gt&gtstr;

cout&lt&lt"转化的二进制数为:";

A(str);

}

char B2(string s)

{char ret;

if(s=="0000") ret='0';

else if(s=="0001") ret='1';

else if(s=="0010") ret='2';

else if(s=="0011") ret='3';

else if(s=="0100") ret='4';

else if(s=="0101") ret='5';

else if(s=="0110") ret='6';

else if(s=="0111") ret='7';

else if(s=="1000") ret='8';

else if(s=="1001") ret='9';

else if(s=="1010") ret='A';

else if(s=="1011") ret='B';

else if(s=="1100") ret='C';

else if(s=="1101") ret='D';

else if(s=="1110"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值