[I]

Binary …. yani ikilik düzeyde çarpma yapan ve bunu size adım adım gösteren C programı.



#include <stdio.h>


#include <dos.h>


#include <conio.h>


#include <iostream.h>


#define size2 8





void first(void);


void second(void);


void result(void);


void show(void);


void add(void);


void shift(void);


void dec2bin (int ,int []);


void unsign(void);


void mm2(void);


int t,re,i=0,iz=0;


int secim;


int buffer[size2];


int deger=0,diger=0;


long res=0;


int multiplicand,multiplier,m[size2],q[size2];


int carry;


int m2[size2];





void main()


{


do


{


clrscr();


printf(”

Please Enter Which Technic you will use … “);


printf(”
=====> 1 for Unsigned <===== “);


printf(”
=====> 2 for Boot’s <===== “);


printf(”
=====> “);


scanf(“%d”,&secim);


}while((secim<0)||(secim>2));


if(secim==1)


first();


else


second();


}





void first()


{


do


{


clrscr();


printf(“Enter a Integer numer : “);


scanf(“%d”,&multiplicand);


printf(”
Enter other Integer number : “);


scanf(“%d”,&multiplier);


}while((multiplicand<0)||(multiplier<0));


dec2bin (multiplicand,q);


dec2bin (multiplier,m);


unsign();


getch();


}





void dec2bin (int dec,int arr[])


{


int input = dec;


int count = 0;


do


{


i = input%2;


arr[count] = i;


input = input/2;


count++;


}while (input > 0);


for(i=count;i<size2;i++)


{


arr[i]=0;


}


count=size2;


printf (“Binary representation is: “);


do


{


printf (“%d”, arr[count - 1]);


count–;


} while (count > 0);


printf (”
“);


}





void unsign()


{


t=size2;


carry=0;


for(i=0;i<size2;i++)


buffer[i]=0;


show();


do


{


if(q[0]==0)


{


shift();


show();


t–;


iz++;


printf(” %d .part

“,iz);


}


else if(q[0]==1)


{


add();


shift();


show();


t–;


iz++;


printf(” %d .part

“,iz);


}


}while(t>0);


result();


}





void result(void)


{


int counter=0;


diger=0;


for(i=0;i<size2;i++)


{


deger=q[i];


diger=diger*2;


if(counter==0)


diger=1;


printf(”
%d %d”,deger,diger);


res+=deger*diger;


++counter;


}


printf(”
“);


for(i=0;i<size2;i++)


{


deger=buffer[i];


diger=diger*2;


printf(”
%d %d”,deger,diger);


res+=deger*diger;


++counter;


}


printf(”

Your result is %d”,res);


}





void show(void)


{


printf(”
%d “,carry);


for(i=size2-1;i>=0;i–)


printf(“%d”,buffer[i]);


printf(” “);


for(i=size2-1;i>=0;i–)


printf(“%d”,q[i]);


printf(” “);


for(i=size2-1;i>=0;i–)


printf(“%d”,m[i]);


printf(” “);


}





void shift(void)


{


for(i=0;i<size2-1;i++)


q[i]=q[i+1];


q[size2-1]=buffer[0];


for(i=0;i<size2-1;i++)


buffer[i]=buffer[i+1];


buffer[size2-1]=carry;


}





void add(void)


{


for(i=0;i<size2-1;i++)


{


if((buffer[i]==0)&&(m[i]==0)&&(carry==0))


{


buffer[i]=0;


carry=0;


}


else if((buffer[i]==0)&&(m[i]==0)&&(carry==1))


{


buffer[i]=1;


carry=0;


}


else if((buffer[i]==0)&&(m[i]==1)&&(carry==0))


{


buffer[i]=1;


carry=0;


}


else if((buffer[i]==1)&&(m[i]==0)&&(carry==0))


{


buffer[i]=1;


carry=0;


}


else if((buffer[i]==1)&&(m[i]==1)&&(carry==1))


{


buffer[i]=1;


carry=1;


}


else if((buffer[i]==1)&&(m[i]==1)&&(carry==0))


{


buffer[i]=0;


carry=1;


}


else if((buffer[i]==1)&&(m[i]==0)&&(carry==1))


{


buffer[i]=0;


carry=1;


}


else if((buffer[i]==0)&&(m[i]==1)&&(carry==1))


{


buffer[i]=0;


carry=1;


}


}


show();


printf(” Added..”);


}





void second()


{


clrscr();


printf(“Enter a Integer numer : “);


scanf(“%d”,&multiplicand);


printf(”
Enter other Integer number : “);


scanf(“%d”,&multiplier);


dec2bin (multiplicand,q);


dec2bin (multiplier,m);


mm2();


}





void mm2()


{


for(i=size2-1;i>=0;i–)


{


deger=m[i];


if(deger==1)


m2[i]=0;


else


m2[i]=1;


}


for(i=size2-1;i>=0;i–)


{


deger=m2[i];


if((deger==1)&&(carry==0))


{


m2[i]=0;


carry=1;


}


else if((m2[i]==0)&&(carry==1))


{


m2[i]=1;


carry=0;


}


else if((m2[i]==0)&&(carry==0))


{


m2[i]=0;


carry=0;


}


else if((m2[i]==1)&&(carry==1))


m2[i]=0;


}


for(i=size2-1;i>=0;i–)


printf(“%d”,m[i]);


printf(”
“);


for(i=size2-1;i>=0;i–)


printf(“%d”,m2);
getch();


}

Kaynak: Doğu Akdeniz Univ. CSIT Labworks
belgesi-411