07일 C 언어(16): 진수 표기법 - 최적화

1371 단어
개념
코드
#include 
void printfBinary(int num);
void printfOct(int num);
void total(int value,int base,int offset);
int main()
{
    printfBinary(10);
    printfOct(10);
    return 0;
}

void printfOct(int num)
{
    total(num, 7, 3);
}

void printfBinary(int num)
{
    total(num, 1, 1);
}

//        
// value         
// base    &   
// offset           
void total(int value,int base,int offset)
{
    // 1.      ,              
    char charValue[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
    // 2.      ,          
    char result[32] = {'0'};
    // 3.      ,                    
    int pos = sizeof(result)/sizeof(result[0]);

    
    while (value !=0) {
        //   4   
        int res = value & base; // 1 7 15
        //                           
        char c = charValue[res];
        //        printf("%c",c);
        //                    
        result[--pos] = c;
        
        //              4 
        value = value >> offset;  // 1 3 4
//        printf("pos = %i
",pos); } for (int i = pos; i < 32; i++) { printf("%c",result[i]); } printf("
"); }

좋은 웹페이지 즐겨찾기