Valera Fooksman (oxfv) wrote,
Valera Fooksman
oxfv

А меня еще спрашивают, почему наша компания дышит на ладан

Впрочем, именно этого бойца уже давно уволили. Но код вот этот продолжает прекрасно функционировать.

В связи с нижеприведенным кодом у меня есть вот какие вопросы:
  1. Что делают эти три функции?

  2. Где ошибка в первых двух (третья - правильная)?

  3. По-вашему, во сколько раз меньше времени и сил уйдет у вас на написание эквивалентного кода?

  4. Kогда я сдохну?

А вот, собственно, и сам код:
void DecBreakintoTwo(int Dec, U8 * Result1, U8 * Result2)
{
    int _Dec,i,k=0;
    int Comp[4];
    int Bin[16];
    for (i=0;i<=15;i++)
         Bin[i]=0;
    for (i=0; Dec!=0; i++){
        Bin[i] = Dec%2 ;
        _Dec = (int)(Dec / 2);
        Dec = _Dec;
    }
    i =0;    
    for( ;(i<=3)&&(k<=12); k=k+4){
            Comp[i]= (Bin[k])+(Bin[k+1]*2)+(Bin[k+2]*4)+(Bin[k+3]*8);
            //printf("Comp %d is %d\n",i,Comp[i]);
            i++;
                    
        }
    *Result1 =Comp[0] + Comp[1]*16;//printf("Result1 is %d\n",Result1);
    *Result2= Comp[2] + Comp[3]*16;//printf("Result2 is %d\n",Result2);
    return;
}

void DecBreakintoThree(int Dec, U8 * Result1, U8 * Result2, U8 * Result3){
    int _Dec,i,k=0;
    int Comp[6];
    int Bin[24];
    for (i=0;i<=23;i++)
         Bin[i]=0;
    for (i=0; Dec!=0; i++){
        Bin[i] = Dec%2 ;
        _Dec = (int)(Dec / 2);
        Dec = _Dec;
    }
    i =0;    
    for( ;(i<=5)&&(k<=20); k=k+4){
            Comp[i]= (Bin[k])+(Bin[k+1]*2)+(Bin[k+2]*4)+(Bin[k+3]*8);
            //printf("Comp %d is %d\n",i,Comp[i]);
            i++;
                    
        }
    *Result1 =Comp[0] + Comp[1]*16;//printf("Result1 is %d\n",Result1);
    *Result2 =Comp[2] + Comp[3]*16;//printf("Result2 is %d\n",Result2);
    *Result3 =Comp[4] + Comp[5]*16;
    return;
}

void DecBreakintoFour(int Dec, U8 * Result1, U8 * Result2, U8 * Result3, U8 * Result4){
    int _Dec,i,k=0;
    int Comp[8];
    int Bin[32];
    for (i=0;i<=31;i++)
         Bin[i]=0;
    for (i=0; Dec!=0; i++){
        Bin[i] = Dec%2 ;
        _Dec = (int)(Dec / 2);
        Dec = _Dec;
    }
    i =0;    
    for( ;(i<=7)&&(k<=28); k=k+4){
            Comp[i]= (Bin[k])+(Bin[k+1]*2)+(Bin[k+2]*4)+(Bin[k+3]*8);
            //printf("Comp %d is %d\n",i,Comp[i]);
            i++;
                    
        }
    *Result1 =Comp[0] + Comp[1]*16;//printf("Result1 is %d\n",Result1);
    *Result2 =Comp[2] + Comp[3]*16;//printf("Result2 is %d\n",Result2);
    *Result3 =Comp[4] + Comp[5]*16;
    *Result4 =Comp[6] + Comp[7]*16;
    return;
}



Неслучайное слово из этого поста: сдохну.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 34 comments