![]() |
Binary Multiplication CPP [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 |
| Tüm Zamanlar GMT +3 Olarak Ayarlanmýþ. Þuanki Zaman: 03:04. |
Powered by vBulletin® Version 3.8.9 Copyright ©2000 - 2026, vBulletin Solutions, Inc.
Site kurucularý: Damla ve Meltem