我搞不懂,哪位可以帮我讲解一个吗?
先谢啦!
可以看点汇编之类的书.
十进制转换为其他进制用求余,最先出来的余数是最高位.
二进制转八进制,十六进制有简便方法.
2进制转8(16)进制,从小数点往右数,每3(4)位化成一位8(16)进制位,不够的最低位补齐0(小数后加0,其值不变).
小数点往左走每3(4)位化成一位8(16)进制位,不够的最高位补齐0(整数最高位前加0,其值不变).
8(16)进制转2进制反之.
8.16进制的转换都可以先转换成2进制,再将其转换到所求的进制.
其他进制数转换成10进制就是按权展开相加就可以.
#include<stdio.h>
#define MAXSIZE 100
typedef struct
{
int a[MAXSIZE];
int top ;
}sequence_stack ;
void init_seqstack(sequence_stack*st)
{
st->top=0 ;
}
void printseqstack(sequence_stack*st,int m)
{
int i ;
i=st->top-1 ;
while(i>=0)
{
/*十进制转换为十六进制*/
if(m==16)
{
switch(st->a[i])
{
case 10 :
printf("A");
break ;
case 11 :
printf("B");
break ;
case 12 :
printf("C");
break ;
case 13 :
printf("D");
break ;
case 14 :
printf("E");
break ;
case 15 :
printf("F");
break ;
case 9 :
case 8 :
case 7 :
case 6 :
case 5 :
case 4 :
case 3 :
case 2 :
case 1 :
case 0 :
printf("%d",st->a[i]);
break ;
}
}
else
{
printf("%d",st->a[i]);
}
i--;
}
}
/*堆栈存放各个数*/
void jzhzhh(sequence_stack *st,int n,int m)
{
int i=0 ;
while(n!=0)
{
st->a[i]=n%m ;
n=n/m ;
st->top++;
i++;
}
}
int main()
{
int n,m ;
sequence_stack p ;
printf("十进制数n=");
scanf("%d",&n);
printf("进制m=");
scanf("%d",&m);
init_seqstack(&p);
jzhzhh(&p,n,m);
printseqstack(&p,m);
printf("\n");
return(0);
}
/*十进制数转其他进制数*/