求将10进制换算成2,8,16进制的C++编程
- 提问者网友:送舟行
- 2021-07-30 00:42
- 五星知识达人网友:怙棘
- 2021-07-30 00:58
#include <iostream>
#include <stdio.h>
using namespace std;
void main()
{
long i,j,x;
int k;
char flag=1;
char bia[33];
strcpy(bia,"");
cin>>x;
if (x<0) flag=-1;
cout<<endl;
i=0;j=flag*x;
//if (flag) {bia[0]='-';i=1;}
do
{
bia[i++]=(j & 1)+'0'; j>>=1;
}while (j!=0);
if (flag==-1){bia[i++]='-';}
bia[i]='\0';strrev(bia);
cout<<bia<<endl;
printf("\o\n\x\n",x,x);
}
实际上后面转8进制和16进制可以直接输出,但如果要真实转换的话,可以用如下代码:
转8进制:
i=0;j=flag*x;
//if (flag) {ocx[0]='-';i=1;}
do
{
ocx[i++]=(j & 7)+'0'; j>>=3;
}while (j!=0);
if (flag==-1){ocx[i++]='-';}
ocx[i]='\0';strrev(ocx);
char st[17]="0123456789ABCDEF";
i=0;j=flag*x;
//if (flag) {hex[0]='-';i=1;}
do
{
hex[i++]=st[j & 15]; j>>=4;
}while (j!=0);
if (flag==-1){hex[i++]='-';}
hex[i]='\0';strrev(hex);
应该可以。。。。代码可能语法不太好,改一改就能用。