二进制转换为十进制c++代码(求指教:用C++编写一个把二进制转换为十进制的函数,要求调用power()函数)

2024-01-12 10:20:03 :78

二进制转换为十进制c++代码(求指教:用C++编写一个把二进制转换为十进制的函数,要求调用power()函数)

大家好,关于二进制转换为十进制c++代码很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于求指教:用C++编写一个把二进制转换为十进制的函数,要求调用power()函数的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

求指教:用C++编写一个把二进制转换为十进制的函数,要求调用power()函数

#include 《iostream》

#include 《math.h》

using namespace std;

void BinaryTodecimal(int arr, int j)

{

int decimal=0;

for(int i=0; i《=31; i++)//计算所有32位的总值,32位的最高位也当做数值位;

{

if( 1 == arr )

decimal += pow(2, j-1-i);//数组的第一个元素对应最高位

}

/*如果输入的真是32位,且最高位是1,此时,最高位应当是符号位,

那么,就要对上面的for循环得到的结果进行转换:

decimal 减去 2^31,再乘以 -1,即(-1)*(decimal-2^31) = 2^31 - decimal

*/

if(32 == j && arr == 1)

decimal = pow(2,31) - decimal;

cout 《《 "十进制:" 《《  decimal 《《 ’\n’ 《《 endl;

}

int main()

{

while(1)

{

cout 《《 "二进制:" ;

int j=0, arr;

char c; 

for(int i=0; i《=31; i++)

arr =0;

while(c = getchar())

{

if( ’0’==c || ’1’==c)

arr = c-48;// ’0’的ascii码是48,所以c-48后,才是真正的整数0;

else if( ’\n’ == c)

{

BinaryTodecimal(arr, j);

break;

}

else 

break;

}

}

return 0;

}

帮忙写一个C++程序,二进制十进制互换

现在提供一个C语言程序给你,可以实现任何进制(1~16)到任何进制的转换的呢?但是是C语言程序的,可以在VC++6.0Sp6上调试通过的,源程序如下:#include《stdio.h》#include《math.h》#include《string.h》#include《stdlib.h》void main(){ int i,j,k,m,n,x,b,c,t; double d,r,p=0; char a; printf("请输入一个任意进制的数:"); gets(a);//在头文件《string.h》中定义 printf("请输入此数为何种进制的数:"); scanf("%d",&t); printf("请输入要转换成的进制(1《N《=16):"); scanf("%d",&n); m=strlen(a);//求字符串的长度 x=m; for(k=0,j=0;k《m;k++)//主要是分段,以小数点为界限 { if(a==’.’) { x=k; break; } if(a==’-’) j++; } for(k=x+1;k《m;k++)//修正输入过程中可能会输入不止一个“.”和“-”的问题 { if(a==’-’) j++; if(j》1)//如果其中再次遇到“-”证明输入有误,终止程序 { printf("ERROR!\n"); exit(0); } if(a==’.’)//如果其中再次遇到“.”证明输入有误,终止程序 { printf("ERROR!\n"); exit(0); } }//注意:前面两个for()循环可以合并成一个循环,这样就可以节约很多的代码的,但是相对而言,两段程序的时间复杂度一样,修改后的代码如下: /* i=0; j=0; for(k=0;k《m;k++) { if(a==’.’) { i++; x=k; } if(a==’-’) j++; if(i》1||j》1) { printf("ERROR!\n"); exit(0); } }*/ for(j=x-1;j》=0;j--) { if(a==’-’)//符号的处理 break; if(a==’A’) r=10; else if(a==’B’) r=11; else if(a==’C’) r=12; else if(a==’D’) r=13; else if(a==’E’) r=14; else if(a==’F’) r=15; else if(a》70)//修正程序输入合不合法问题的判断,此处采用ASCII值进行 //if(a《=’z’)//此段程序不能判断像输入&、%、#等字符的错误判断 { printf("ERROR!\n"); exit(0);//在头文件《stdlib.h》中定义,无条件跳出程序的的运行 } else r=a-’0’;//将字符转换成数字 if(r》=t) { printf("ERROR!\n"); exit(0); } p=p+r*pow((double)t,(double)(x-j-1));//计算结果 } if(a==’.’) { for(j=x+1;j《m;j++) { if(a==’A’) r=10; else if(a==’B’) r=11; else if(a==’C’) r=12; else if(a==’D’) r=13; else if(a==’E’) r=14; else if(a==’F’) r=15; else if(a》70)//修正程序输入合不合法问题的判断,此处采用ASCII值进行 //if(a《=’z’)//此段程序不能判断像输入&、%、#等字符的错误判断 { printf("ERROR!\n"); exit(0); } else r=a-’0’;//将字符转换成数字 if(r》=t) { printf("ERROR!\n"); exit(0); } p=p+r*pow((double)t,(double)(x-j)); } } if(n==10)//选择性计算,如果是整数就不用进行这一步的计算了,这样可以节约程序的运行时间 { printf("转换结果为:"); if(a==’-’) { printf("-"); } printf("%f",p); } else { k=p;//强制类型转换,可以使用k=(int)p;代替,从而更加的一目了然 i=0; while(k)//判定需要转换的数是否变为0 { h=k%n;//取余,进行进制转换,但是顺序与正确值相反 k/=n;//转换一位之后进行相应的变化 } c=0; //if(p!=(int)p)//选择性计算,如果是整数就不用进行这一步的计算了,这样可以节约程序的运行时间 //{ d=p-(int)p;//取小数部分 while(d!=0) { b=(int)(d*n);//算法为×N取整 d=d*n-b; c++; if(c》=10) break;//主要是控制小数后面万一出现无限小数的时候好跳出循环以免出现死循环 //} } printf("转换结果为:"); if(a==’-’) printf("-"); for(j=i-1;j》=0;j--)//反序输出,大于10的数字进行相应的变化 { if(h==10) printf("A"); else if(h==11) printf("B"); else if(h==12) printf("C"); else if(h==13) printf("D"); else if(h==14) printf("E"); else if(h==15) printf("F"); else printf("%d",h); } if(p!=(int)p)//选择性输出,这样可以节约输出时间和程序的运行时间 { printf("."); for(j=0;j《c;j++)//正序输出 { if(b==10) printf("A"); else if(b==11) printf("B"); else if(b==12) printf("C"); else if(b==13) printf("D"); else if(b==14) printf("E"); else if(b==15) printf("F"); else printf("%d",b); } } if(c》=10)//如果是无限小数则在后以省略号表示 printf("......"); } printf("\n");//输出换行,以使程序的输出结果美观} 如果想变为C++程序,只需要做适当的修改就是了的呢?比如输入使用cin,输出使用cout等的就可以了的,主题结果就不用变的就好的!使用函数可以简化程序的,自己可以试一下的,此处只是作为参考的!

C++程序,将二进制转换为十进制,我看不懂,麻烦各位把每一步给解释一下,谢谢

int parseBinary(const char * const binaryString){ int value = binaryString - ’0’; //’0’这里转换成了int型,查ascii码表得知是48,这里的value //就是把binaryString第一位的值给了value for (int i = 1; i 《 strlen(binaryString); i++) //遍历binaryString { value = value * 2 + binaryString - ’0’; //这里的value就是把之前的value乘以2(二进制)加 //上现有的binaryString位上的值} return value;}给个例子吧binaryString = ‘10001’;第一次value = binaryString - ’0’ = ’1’-’0’=49-48=1;进入循环 value = value*2+binaryString - ’0’ = 1*2 + ’0’ - ’0’ = 2//就是说二进制10 = 2再次循环 value = value*2+binaryString - ’0’ = 2*2 + ’0’ - ’0’ = 4 //二进制100 = 4依次下去最后一个value = value*2+binaryString - ’0’ = 8*2+’1’-’0’=17

一个关于c++的问题(二进制转十进制)

cin是标准输入流。get是成员函数。功能是从键盘取一个字符。存放在ch中。do {cin.get(ch);} while(ch!=’0’&&ch!=’1’);   这一句是判断并取一个字符(为1或0的时候),继续运行。do {Dec+=ch-’0’; cin.get(ch); if(ch==’0’||ch==’1’) Dec*=2; } while(ch==’0’||ch==’1’);   这个循环是对取到的符合二进制的字符进行运算,计算出十进制。cout 《《 "Decimal =" 《《 Dec 《《 ’\n’;  输出结果。cin》》Dec; //这一句可以不要。

关于二进制转换成十进制的c++程序问题

int main(){int Dec = 0; //存放转化为十进制的结果char ch; //获取输入的一个字符cout 《《 "Binary = ";do {cin.get(ch); //得到输入的最高位,如输入:100 ch = ’1’} while (ch != ’0’ && ch != ’1’); //确保取出的第一个值一定为’0’或者’1’ //如果输入中没有’0’或者’1’,继续循环do {Dec += ch - ’0’; //将字符’1’或’0’转化为整型1或0,让Dec累加上转化后的值cin.get(ch); //取出下一位if (ch == ’0’ || ch == ’1’) //如果存在下一位,则表示这个数是进了位的,进行进位运算{Dec *= 2; //进位运算,如十进制:12 = 10 * 1 + 2}} while (ch == ’0’ || ch == ’1’); //当不存在下一位时,说明已经将二进制都转化成了十进制了cout 《《 "Decimal = " 《《 Dec 《《 ’\n’;return 0;};

c++ 2进制到10进制转换

//楼主写的我实在不是很理解,调了一下,竟把我的机子调死了。。。可能是我机子太烂了,不怪你!!//我刚才写了个二进制转十进制的程序,楼主参考一下吧!VC++6.0下调试通过!#include《iostream》 using namespace std; int b2d(char* a, int n){ int result=0; for (int i=n-1; i》=0; i--) { if (!(’1’==a)) { result=0; break; } result=result*2+(a-’0’); } return result;}void main(){ int sum; int n; cout《《"当为0,或输入错误时退出!"《《endl; do{ cout《《"-----------------------------"《《endl; cout《《"兄弟,你要输入几位二进制数: "; cin》》n; char* a=new char; for (int i=0; i《n; i++) { cout《《"输入第"《《i《《"位: "; cin》》a; } sum=b2d(a,n); cout《《sum《《endl; delete a; } while (0!=sum); cout《《"退出"《《endl;}

编写一个c++,将一个二进制整数转换为十进制整数,要用函数调用,求解

#include《iostream》using namespace std;int convert(int value){int i,sum=0;for ( i = 0;  ;i++)if (value 《 pow(10, i))break;for (int j = 0;j 《 i;j++)sum += pow(2, j)*(value%int(pow(10, j + 1)/pow(10,j)));return sum;}int main(){cout 《《 "请输入一个二进制数(即只能输1或0):" 《《 endl;int a;cin 》》 a;cout 《《 "转换成十进制为:" 《《 endl;cout 《《 convert(a) 《《 endl;return 0;}

c++中如何将各进制转化成十进制

把数据存为字符串形式,用 函数 strtol(s,NULL,base),转化为 整型数,按 %d 格式输出。例如:#include 《stdio.h》int main(){char s="10011110101110010100010"; //二进制数char s16="0E0E"; //十六进制数int a,b;a = strtol(s,NULL,2); //二进制转整型数printf("%d\n",a); // 按十进制输出b = strtol(s16,NULL,16); //16进制转整型数printf("%d\n",b); // 按十进制输出return 0;}手工计算,假定 数是 EDCBA, 是 base进制, 可以用x = E*(base 四次方)+D*(base 三次方)+C*(base 二次方)+B*(base 一次方)+A;.

如果你还想了解更多这方面的信息,记得收藏关注本站。

二进制转换为十进制c++代码(求指教:用C++编写一个把二进制转换为十进制的函数,要求调用power()函数)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.