求c++各进制转换的代码(double浮点数)

作者&投稿:益芬 (若有异议请与网页底部的电邮联系)
二进制如何转为十进制(浮点数 c++)~

"10 >> 2"
,"十进制转为二进制"
,"十进制数值∶",0,,,,"#NUM!","二进制数值∶",0
,2,0,"…",0,1,"#NUM!"
,2,0,"…",0,10,"#NUM!"
,2,0,"…",0,100,"#NUM!"
,2,0,"…",0,1000,"#NUM!"
,2,0,"…",0,10000,"#NUM!"
,2,0,"…",0,100000,"#NUM!"
,2,0,"…",0,1000000,"#NUM!"
,2,0,"…",0,10000000,"#NUM!"
,2,0,"…",0,100000000,"#NUM!"
,2,0,"…",0,1000000000,"#NUM!"
"2 >> 10"
,"二进制转为十进制"
,,,,"#NUM!",,"於十进制的值"
,"二进制数值∶",0,,"#NUM!",10,0,"x",2,0,"=",0
,,,,"#NUM!",100,0,"x",2,1,"=",0
,"十进制数值∶",0,,"#NUM!",1000,0,"x",2,2,"=",0
,,,,"#NUM!",10000,0,"x",2,3,"=",0
,,,,"#NUM!",100000,0,"x",2,4,"=",0
,,,,"#NUM!",1000000,0,"x",2,5,"=",0
,,,,"#NUM!",10000000,0,"x",2,6,"=",64
,,,,"#NUM!",100000000,0,"x",2,7,"=",128
,,,,"#NUM!",1000000000,0,"x",2,8,"=",256
,,,,"#NUM!",10000000000,0,"x",2,9,"=",512
,,,,,100000000000,"总和= ",,,,,0
"10>>2(digit)"
,"十进制小数转为二进制小数"
,"十进制小数∶",,,"小数部份乘二","整数部份","小数部分"
,,,,0,0,0,0.1
,"二进制小数∶",0,,0,0,0,0.01
,,,,0,0,0,0.001
,,,,0,0,0,0.0001
,,,,0,0,0,"1E-05"
,,,,0,0,0,"1E-06"
,,,,0,0,0,"1E-07"
,,,,0,0,0,"1E-08"
,,,,0,0,0,"1E-09"
,,,,0,0,0,"1E-10"
,,,,0,0,0,"1E-11"
,,,,0,0,0,"1E-12"
,,,,0,0,0,"1E-13"
,,,,0,0,0,"1E-14"
,,,,0,0,0,"1E-15"
,,,,0,0,0,"1E-16"
,,,,0,0,0,"1E-17"
,,,,0,0,0,"1E-18"
,,,,0,0,0,"1E-19"
,,,,0,0,0,"1E-20"
,,,,0,0,0,"1E-21"
"2>>10(digit)"
,"二进制小数转为十进制小数"
,"二进制小数∶",,,,,"数位"
,,,0,10,,0,"x",2,-1,"=",0
,"十进制小数∶",0,0,100,,0,"x",2,-2,"=",0
,,,0,1000,,0,"x",2,-3,"=",0
,,,0,10000,,0,"x",2,-4,"=",0
,,,0,100000,,0,"x",2,-5,"=",0
,,,0,1000000,,0,"x",2,-6,"=",0
,,,0,10000000,,0,"x",2,-7,"=",0
,,,0,100000000,,0,"x",2,-8,"=",0
,,,0,1000000000,,0,"x",2,-9,"=",0
,,,0,10000000000,,0,"x",2,-10,"=",0
,,,,,,,,,"总和∶",,0

void print(double value,int n)
{
int tempi,tempn[50],D[50],F[50],i,j,k;
double tempf;
tempi=(int)value;
tempf=value-tempi;
i=0;
while(tempi/n!=0)
{
tempn[i]=tempi%n;
tempi=tempi/n;
i++;
}
tempn[i]=tempi%n;
for(j=0;i>=0;j++,i--)
D[j]=tempn[i];
if((value-(int)value)!=0)
{
i=0;
while((tempf-(int)tempf)*10!=0)
{
F[i]=(int)(tempf*n);
tempf=tempf*n-(int)(tempf*n);
i++;
}
}
cout<<"转换前数为:"<<value<<",转换后数为:";
for(k=0;k<j;k++)
cout<<D[k];
if((value-(int)value)!=0)
{
cout<<".";
for(k=0;k<i;k++)
cout<<F[k];
}
cout<<"。
";
}


这个函数已把valude和转换后的数输出了。


s_gaara
另外,虚机团上产品团购,超级便宜

#include<stdio.h>

#define N 50
void binarysys();
void octalsys();
void hex();

void main()
{
printf("进制转换器\n");
int select;
do
{
printf("=================================================================\n");
printf("0、退出\t1、十进制~二进制\t2、十进制~八进制\t3、十进制~十六进制\n");
printf("请选择功能:");
scanf("%d",&select);
if(select==0)
{
break;
}
switch(select)
{
case 1: binarysys();break;
case 2: octalsys();break;
case 3: hex();break;
default : printf("请输入0~3其中的数!\n");
}
}while(1);
}

void binarysys()
{
long int number,i=0;
int arr[N];
printf("请输入一个数:");
scanf("%d",&number);

while(number>=0)
{
if(number<2)
{
arr[i]=number;
break;
}
arr[i]=number%2;
number/=2;
i++;
}
printf("这个数转为二进制后为:");
for(; i>=0; i--)
{
printf("%d",arr[i]);
}
printf("\n");
}

void octalsys()
{
long int number,i=0;
int arr[N];
printf("请输入一个数:");
scanf("%ld",&number);
while(number>=0)
{
if(number<8)
{
arr[i]=number;
break;
}
arr[i]=number%8;
number/=8;
i++;
}
printf("这个数转为八进制后为:");
for(;i>=0;i--)
{
printf("%d",arr[i]);
}
printf("\n");
}

void hex()
{
long int number,i=0;
int arr[N];
printf("请输入一个数:");
scanf("%ld",&number);
while(number>=0)
{
if(number<16)
{
arr[i]=number;
break;
}
arr[i]=number%16;
number/=16;
i++;
}
printf("这个数转为十六进制后为:");
for(;i>=0;i--)
{
switch(arr[i])
{
case 1: printf("%d",arr[i]);break;
case 2: printf("%d",arr[i]);break;
case 3: printf("%d",arr[i]);break;
case 4: printf("%d",arr[i]);break;
case 5: printf("%d",arr[i]);break;
case 6: printf("%d",arr[i]);break;
case 7: printf("%d",arr[i]);break;
case 8: printf("%d",arr[i]);break;
case 9: printf("%d",arr[i]);break;
case 10:
arr[i]='A';
printf("%c",arr[i]);
break;
case 11:
arr[i]='B';
printf("%c",arr[i]);
break;
case 12:
arr[i]='C';
printf("%c",arr[i]);
break;
case 13:
arr[i]='D';
printf("%c",arr[i]);
break;
case 14:
arr[i]='E';
printf("%c",arr[i]);
break;
case 15:
arr[i]='F';
printf("%c",arr[i]);
break;
case 16:
arr[i]='G';
printf("%c",arr[i]);
break;
}
}
printf("\n");
}

在这里献丑了!

1.将你输入的数通过字符串的方式存储是方便一下的计算的
正如你举得例子,输入137 数组中存入的是 字符型的137 要将
里面的每个字符型的数字转换成数值型的数字就得 *p-'0',因为
字符存储时实际存储的是字符的ASC码, 例如 输入 1(字符型)ASCII码为
49 若不减去0的ASC码 就会以49去参加运算
这个while循环是用于数制转换的.将八进制转换成10进制,其实就是将8进制数码按权展开,137=1*8^2+3*8^1+7*8^0
2这个while就是这个用处,一步一步看下去,加入输入为137存储为字符137
第一次是将字符型的1减去0的asc码就得到了数值型的1 1本来是最高位应该是但是这里得到的只有系数(姑且叫做系数吧而权为8^0=1),由于后面还有两个数,这样通过循环n=n*8+*p-'0';将1的权值提升到了8^2,对第二位也类似.
3.要进行浮点数的进制转换就得找准小数点的位置.然后按照类似的方法就可以了

double10进制浮点数转换为2进制8进制16进制的方法如下:

  • 十进制转换为二进制,分为整数部分和小数部分。

  • 整数部分:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。

  • 小数部分:乘2取整法,即每次将小数部分乘以2,整数部分为该位权上的数,而小数部分继续乘以2,整数部分又为下一个位权上的数字。这个步骤一直持续下去。如果小说部分变成0,则停止;如果出现无限循环,则在循环开始处加括号表示重复。

  • 十进制转换为八进制或十六进制类似于转换为二进制。只是除以8或16取余,并且十六进制中需要用A-F来表示10-15。

  • 反过来也可以用相同的方法将二进制8进制16进制转换为十进制。

  • 例如:10.625(10) = 1010.101(2) = 12.5(8) = A.A(16)



偶自己写的
2~32进制之间任意数都可以转换 有浮点数的
(*^__^*) 嘻嘻… 献丑了
#include<iostream>
using namespace std;
double pow(int m,int n)
{
double s=1;
if(n<0)
{
n=-n;
while(n--)s*=m;
s=1/s;
}
else while(n--)s*=m;
return s;
}
int main()
{
cout<<"//任意进制转换(保留12位小数)" <<endl
<<"//(用空格隔开) 要转换的数 原先的进制 转换后的进制 "<<endl;
int x,y;
char c[64];
while(cin >> c>>x>>y)
{
cout <<"("<<c<<")"<<x<<endl<<"=(0";
long double n=0;
int i=0,k=0,t=0;
while(c[++k])
{
if(c[k]==46)
i=k;
if(c[k]>=x+(x>9?55:48))t++;
}
if(!i)
{
c[k]=46;
i=k;
}
int a=0;
for(;k--;)
{
if(c[k]!=46)
n+=pow(x,i-k-a)*(c[k]-(c[k]>57?55:48));
else a=1;
}
int s=n;
long double m=n-s;
int b[64];
i=0;
while(s)
{
b[i++]=s%y;
s/=y;
}
while(i--) cout << (char)(b[i]+(b[i]>9?55:48));
if(m)
{
int z=12;
cout <<".";
while(m&&z--)
{
m*=y;
cout<<(char)(m+((int)m>9?55:48));
m-=(int)m;
}
}
cout<<")"<<y<<endl;
if(t)cout<<"有"<<t<<"个要转换的数与进制不服"<<endl;
}
}


用C语言把十进制转换为8进制,最好用栈结构
void dec2oct(int x) \/\/将十进制数x转化为8进制数输出 {if(x>7)dec2oct(x\/8); \/\/如果 x 不止一位8进制数,则先处理其高位部分 printf("%d",x%8); \/\/递归返回时再输出 x 的最低位 } int main(){int x;scanf("%d",&x); \/\/读入要转换的十进制数x dec2oct(...

C语言,C++。十六进制数ffff怎么转换成十进制数?
还是我来告诉你吧!十六进制转换成十进制比较容易,给你举个例子你就明白了。如:0xab7d 十进制算法:a*16^3+b*16^2+7*16+d 希望能帮到你

c语言实现十进制转换二进制
思路:十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。参考代码:...

求c++各进制转换的代码(double浮点数)
include<stdio.h> define N 50 void binarysys();void octalsys();void hex();void main(){ printf("进制转换器\\n");int select;do { printf("===\\n");printf("0、退出\\t1、十进制~二进制\\t2、十进制~八进制\\t3、十进制~十六进制\\n");printf("请选择功能:");scanf("%d",&select...

在c语言中用最简单的方法把十进制转化为十六进制
};printf("请输入一个十进制整数:"); scanf("%d",&num); while(num>0) { yushu=num%16; a[i++]=yushu; num=num\/16; } printf("转化为十六进制的数为:0x"); for(i=i-1;i>=0;i--)\/\/倒序输出 {m=a[i];printf("%c",hex[m]); } printf("\\n"); }程序运行结果:...

求十进制转换二进制C语言代码
*@函数功能:实现十进制转换为二进制 *@参数:需要转换的十进制整数 *\/ voiddeciToBin(intnum) { \/*第归结束条件*\/ if(num==0) { return; } \/*第归调用*\/ deciToBin(num\/2); \/*逆序打印*\/ fprintf(stdout,"%d",num%2); } 扩展资料: 使用C语言编程实现任意进制数(2-16进制)转换为其他任意进制数...

编一个c程序 C++进制转换器:十进制→二、八、十六进制,二进制→八...
用菜单,多乱哪,都显示出来,很容易的。include <stdio.h> include <string.h> void main(){ char aaa[5];unsigned char bbb, ccc, i, k, Err = 0;long unsigned int nnn = 0;printf(" \\n请输入数字 (0~9, A~Z): "); gets(aaa);printf(" \\n 当前进制 (2~36): ");...

用c语言的函数调用如何将一个十进制数转换为八进制数?
10进制转换8进制输出,使用printf函数的格式输出%o即可。如果需要得到转换后的字符串,使用sprintf函数即可。例程:include <stdio.h>int main (){ int x; char s[100]; printf("输入要转换的十进制数:\\n"); scanf("%d",&x); sprintf(s,"%o",x); \/\/十进制转换为八进制,并保存到...

请教如何用C语言实现10进制转换5进制的转换器
\/\/这是我数据结构课上老师留的课堂作业,但是此代码并非本人原创。但已通过验证。\/\/这个代码可以把十进制的转换成任意进制的。include<stdio.h> include<stdlib.h> define STACK_INIT_SIZE 50 define STACK_INCREMENT 10 \/\/①---栈定义--- typedef struct{ int *base;int *top;int stacksize;}S...

八进制、十六进制、二进制的换算关系?
十六进制到八进制和二进制的转换:每个十六进制数位对应四个二进制数位,可以将每个十六进制数位独立地转换为四位二进制数,即: 0 → 0000 1 → 0001 2 → 0010 3 → 0011 4 → 0100 5 → 0101 6 → 0110 7 → 0111 8 → 1000 9 → 1001 A → 1010 B → 1011 C → 1100 D →...

凭祥市15045238684: C++十进制转二进制,十六进制转十进制
粱薛硼酸: #include &lt;iostream&gt; using namespace std; void decToBin(long x, char *a) { ltoa(x, a, 2); } void hexToDec(char *a, long &amp;x) { x = strtol(a, (char**)NULL, 16); } int main() { long x; char temp[255]; cout &lt;&lt; "输入一个十进制数: "; cin &...

凭祥市15045238684: 用c++编一个进制转换的程序 -
粱薛硼酸: #include using namespace std; //nNum 输入待转换十进制数,n进制 //输出n进制的字符串 string Conver(unsigned long nNum, int n) { string str; string s = "0123456789ABCDEF"; int i = 0,len = 0; char chTmp; while(nNum) { str += s[nNum%n]; ...

凭祥市15045238684: 用C++编程实现十进制与八进制的转换 -
粱薛硼酸: #includeusing namespace std; int ConvertNumber(int x,int n,int m) { int y,z,nn; y=0; nn=1; while ( x ) { y+=x%10*nn; x/=10; nn*=n; } z=0; nn=1; while ( y ) { z+=y%m*nn; y/=m; nn*=10; } return z; } void main() { int x,y; cin>>x; y=ConvertNumber(x,10,8); cout< >x; y=ConvertNumber(x,8,10); cout<<}

凭祥市15045238684: 帮忙写一个C++程序,二进制十进制互换 -
粱薛硼酸: 现在提供一个C语言程序给你,可以实现任何进制(1~16)到任何进制的转换的呢?但是是C语言程序的,可以在VC++6.0Sp6上调试通过的,源程序如下:#include#include#include#include void main() { int i,j,k,m,n,x,b[20],h[20],c,t; double d,r,p=...

凭祥市15045238684: 如何利用C++互相转换10(0~9)进制和36进制(0~9,A~Z)?请给出代码. -
粱薛硼酸: #include #include #include char exchange(int s)//将十进制转换成的36进制对应的数字换成字母 { char ch; if(s>9)//将大于10的数字换成相应的字母 ch=char('a'+s-10); else ch = char(s+'0');//小于10的数字保持不变 return ch; } int exchangealph(char s...

凭祥市15045238684: 用C++把十进制转换成二、八、十六进制的程序代码~~ -
粱薛硼酸: #include<iostream> #include<iomanip> using namespace std; void erjinzhi(int num); int main() { int n,x; cout<<"请输入十进制整数以及要转化成的进制数,以空格分开:\n"; cin>>n>>x; switch (x) { case 8:cout<<"八进制:"<<oct<<n<<endl;...

凭祥市15045238684: 编写一个VC++程序把十进制数转化成二进制,八进制,十六进制. -
粱薛硼酸: #include "iostream.h" void f1(double p,int q) //编辑对实数p的整数部分进制转换的子函数 { int i,m,n,t=0,a[100]; for(i=0;;i++) //进制转换执行操作循环 { n=(int)p/q; m=(int)p%q; p=n; a[i]=m; t++; if(n==0) break; //当n为0时,循环结束 } for(i=t-1;i>=0...

凭祥市15045238684: 求一个C++语言环境下10进制换16进制换8进制的小程序源代码
粱薛硼酸: 这个你关键就是要知道有这样的函数,hex,oct,dec,分别是16进制,8进制和10进制,这点如果学过C就容易记住,接下来有了这个咱就可以开始搞了... #include <iostream> int main() {using namespace stdint n;cin>>n;cout<<hex; //此步把cout转换为输出16进制cout<<n; //这是显示的n就是16进制的了,如果你输入的是16进制的数字,显示出来就是16进制的10进制的数cout<<oct; //还是同理,把他转换为8进制的cout<<n; //输出8进制的10进制数字 } 希望能学会,谢谢

凭祥市15045238684: 编写一个程序(C++),实现2\8\10\16进制之间的转换 -
粱薛硼酸: 写了个类 ,dev c++ 通过 , 用法很简单#include #include using namespace std; class Converter { public: Converter & ReadBinary(char * s) { N = 0; while((*s++)!=NULL) N=N*2+(*(s-1) - '0'); return *this; } Converter & ReadOctal(char * s) { sscanf(s ,...

凭祥市15045238684: 帮忙编写一个C++程序,要求十进制和八进制的相互转换! -
粱薛硼酸: 在iostream早定义了八进制与十进制的输入输出,请恕我偷个懒,具体代码如下:#include<iostream> using namespace std; int main() { int n,x; cout<<"输入数字的进制(8代表八进制,10代表十进制):\n"; cin>>x; cout<<"请输入数字:"; if(x==8) cin>>oct>>n; else cin>>n; cout<<"请输出转换后的数:\n"; if(x==8) cout<<n<<endl; else cout<<oct<<n<<endl; return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网