c++编写程序将十进制转换器数转化为八位二进制转换器输出(要求用main)

C++任意进制转换器转换为十进制转換器
我们知道任意进制转换器转换为十进制转换器都是乘以基数的多少次方,然后相加
废话不多说直接上代码。

ans*=r; //我这里是把1看成0把0看成1来算的。这样比较方便其实都一样。

我们一般的算法都是除以基数然后倒着取数。大家有没有发现和我们学过的栈是不是很相似接下来废话不多说,直接上代码


//将单精度浮点数转换为十进制轉换器
 
//将单精度浮点数转换为二进制转换器---------分析原理
 // (2)M表示有效数字,大于等于1小于2。
 // (3)2^E表示指数位
 //对于单精度 符号位 1 指数为8 有效数字 23
 //将float分解成正数部分和小数部分
 //将其转换为分别转换为二进制转换器的数字
 //分解小数部分----由于小部分,可能会出现分解不完全的情况并且float中仅有23位,所以仅仅循环23次------但是对于仅有小数的部分还要截断一部分,所以需要补充
 //准备工作已经完成了开始进行实际的工作 
 //找到小数的第一个1为位置
 
//将二进制转换器的数据,转换为float浮点数
 // (2)M表示有效数字大于等于1,小于2
 // (3)2^E表示指数位。
 //对于单精度 符号位 1 指数为8 有效数字 23
 // (1)E不全为0或不全为1这时,浮点数就采用上面的规则表示即指数E的计算值减去127(或1023),得到真实值再将有效数字M湔加上第一位的1。
 // (2)E全为0这时,浮点数的指数E等于1 - 127(或者1 - 1023)有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数这样做是为了表示±0,以及接近于0的很小的数字
 // (3)E全为1。这时如果有效数字M全为0,表示±无穷大(正负取决于符号位s);如果有效数字M不全为0表示这個数不是一个数(NaN)。
 //分解有效数数字因为,对于E来说比较复杂所以我们最后在分解
 else //如果符号为0的话,返回正无穷
 else //不然的话返回NAN 不昰一个数字
 //最后一种情况,指数不全为0或者1
 

头文件iostream中提供控制符:

dec:指示cout以十進制转换器输出 hex:指示cout以十六进制转换器输出。 oct:指示cout以八进制转换器输出


输出二进制转换器有些麻烦,因为并没有这样的控制符不过鈳以使用bitset把要输出的数变成二进制转换器存储输出。

我要回帖

更多关于 进制转换器 的文章

 

随机推荐