我搞不懂,哪位可以帮我讲解一个吗?
先谢啦!
 2006-09-14 10:48
	    2006-09-14 10:48
   2006-09-14 18:12
	    2006-09-14 18:12
   2006-09-14 18:15
	    2006-09-14 18:15
   
										
					
	
 2006-09-14 18:18
	    2006-09-14 18:18
   2006-09-14 18:19
	    2006-09-14 18:19
   2006-09-14 19:54
	    2006-09-14 19:54
  
可以看点汇编之类的书.
十进制转换为其他进制用求余,最先出来的余数是最高位.
二进制转八进制,十六进制有简便方法.
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);
}
/*十进制数转其他进制数*/

 2006-09-14 20:06
	    2006-09-14 20:06