Aktív témák

  • t3rm1nat0r

    csendes tag

    válasz t3rm1nat0r #42 üzenetére

    ..és a teljes program..

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>


    int pipeline[8*4][9];
    int parameter[8];
    int adder_tablazat[4*4*2][4];



    int main()
    {
    int c,i,j,k,l,mask,szam1=61,szam2=35;

    printf("%d + %d = %d\n",szam1,szam2,szam1+szam2);



    for(c=0;c<2;c++)//carry
    for(i=0;i<4;i++)
    for(j=0;j<4;j++)
    {
    int osszeg=i+j+c;
    int addr=c*16+i*4+j;
    mask=1;

    for(k=0;k<3;k++) {adder_tablazat[addr][k]=((osszeg & mask)>>k);mask<<=1;}
    }
    for(c=0;c<2;c++)//carry
    for(i=0;i<4;i++)
    for(j=0;j<4;j++)
    {
    int osszeg=i+j+c;
    mask=1;

    printf("%d + %d + %d =%d ",i,j,c,osszeg);
    for(k=0;k<3;k++) printf("%d",adder_tablazat[c*16+i*4+j][2-k]);
    printf("\n");
    }

    mask=1;
    for(k=0;k<8;k++) {parameter[k]=(szam1 & mask)>>k;mask<<=1;}
    mask=1;
    for(k=0;k<8;k++) {pipeline[0][k]=(szam2 & mask)>>k;mask<<=1;}
    pipeline[0][8]=0;//carry



    int pl=4+1;

    for(l=0;l<pl;l++)
    {
    for(j=0;j<pl;j++)
    {
    mask=0x80;
    int bits=0;
    for(k=0;k<8;k++)
    {
    int bit=pipeline[j][7-k];
    printf("%d",bit);
    if(bit) bits|=mask;
    mask>>=1;
    }
    printf("= %d ",bits);
    printf(" cr= %d\n",pipeline[j][8]);

    }
    printf("\n");


    for(j=pl;j>=0;j--)
    for(k=0;k<8;k+=2)
    {
    if((k>>1) == j)
    {
    int bita0=pipeline[j][k];
    int bita1=pipeline[j][k+1];
    int bitb0=parameter[k];
    int bitb1=parameter[k+1];
    int carry=pipeline[j][8];

    int addra=(bita1<<1)+bita0;
    int addrb=(bitb1<<1)+bitb0;
    addra=(carry<<4) + (addra<<2) + addrb;


    pipeline[j+1][k ]=adder_tablazat[addra][0];
    pipeline[j+1][k+1]=adder_tablazat[addra][1];
    pipeline[j+1][8 ]=adder_tablazat[addra][2];//carry
    }
    else
    {
    pipeline[j+1][k] =pipeline[j][k];
    pipeline[j+1][k+1]=pipeline[j][k+1];
    }
    }
    }
    return 0;
    }

Aktív témák