SlideServe
Menu
Préférences
© SlideServe · v2026

Binary to decimal

bridie avatar
11 diapositives · 2K Views · Oct 24, 2014

Binary to decimal. In base 2 all digits are either 0 or 1 and can be interpreted as 10111 = 1 x 1 + 1 x 2 + 1x 4 + 0 x 8 + 1 x 16 =1 x 2 0 +1 x 2 1 + 1 x 2 2 +0 x 2 3 +1 x 2 4 = 23( base 10)

Binary to decimal - slide 1
01 / 11Binary to decimal
1 / 17

Télécharger la présentation

Binary to decimal
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Binary to decimal In base 2 all digits are either 0 or 1 and can be interpreted as 10111 = 1 x 1 + 1 x 2 + 1x 4 + 0 x 8 + 1 x 16 =1 x 20 +1 x 21 + 1 x 22 +0 x 23 +1 x 24 = 23( base 10) If b is an array containing these 5 digits so that b[0]=1, b[1]=1, b[2]=1,b[3]=0, b[4]=1, how do we write code to get to the decimal equivalent?

  2. Inefficient Binary to decimal code #include <iostream.h> #include <math.h> int main() { /* to convert a binary representation to a decimal one*/ int dec=0,b[5]={1,1,1,0,1}; for (int i=0;i<5;i++) dec+=b[i]*pow(2,i); // really inefficient cout << dec << endl; return 0; }

  3. Somewhat efficient code-10 multiplications int main() { /* to convert a binary representation to a decimal one*/ int dec=0, b[5]={1,1,1,0,1}, power2=1; for (int i=0;i<5;i++) { dec+=b[i]*power2; power2*=2; } cout << dec << endl; return 0; }

  4. Horner’s scheme- 4 multiplications 1 x 20 +1 x 21 + 1 x 22 +0 x 23 +1 x 24 =1 + 2 x(1 + 2x(1 + 2x(0 + 2x1))) Recall b[0]=1, b[1]=1, b[2]=1,b[3]=0, b[4]=1 /* to convert a binary representation to a decimal one*/ int dec,b[5]={1,1,1,0,1}; dec =b[4]; for (int i=3;i>=0;i--) { dec=2*dec+b[i]; //horner's scheme } cout << dec << endl;

  5. Horner’s scheme via recursion int horner(int b[ ],int i,int n); int main() { /* to convert a binary representation to a decimal one*/ int dec,b[5]={1,1,1,0,1}; cout <<horner(b,0,4)<< endl; return 0; } int horner(int b[ ],int i,int n) { if (i==n) return b[n]; //base case else return 2*horner(b,i+1,n)+b[i]; }

  6. Hex to decimal int horner(char hex[ ],int i,int n); int main() { /* to convert a hexadecimal representation to a decimal one*/ char hex[]="C1A"; //this is A*256 + 16 +A cout <<horner(hex,0,2); return 0; } int horner(char hex[ ],int i,int n) {int d; if (hex[i]>='A') d=10+hex[i]-'A'; else d=hex[i]-'0'; if (i==n) return d; else return 16*horner(hex,i+1,n)+d; }

  7. int horner(char hex[ ],int n); int main() { /* to convert a hexadecimal representation to a decimal one*/ char hex[]="A1C"; //this is A*256+1*16 +C cout <<horner(hex,2); return 0; } int horner(char hex[ ],int n) {int d; if (hex[n]>='A') d=10+hex[n]-'A'; else d=hex[n]-'0'; if (n==0) return d; else return 16*horner(hex,n-1)+d; } Hex to decimal reverse ordering

  8. Decimal to binary fractions .625 = 6 x 10-1 + 2 x 10-2 + 5x 10-3 If .111 were a fraction in binary, then .111 =1 x 2-1 + 1 x 2-2 +1 x 2-3 = .5 +.25+.125 =.875 Let us represent .625 as a 2-1 + b 2-2 +c 2-3 =.abc in binary And try to find a,b, and c. note that 2 x .625 = a 20 + b 2-1 +c 2-2 = 1.250 so integer part gives us a=1 fractional part is b 2-1 +c 2-2 =.250 multiply fractional part by 2 and integer part = 0= b fractional part of .5 is c 2-1 so multiplying by 2 and taking integer part gives c=1

  9. Binary equivalent of .1 2 x .1 =.2 integer part =0 2 x .2 =.4 integer part =0 2 x .4 =.8 integer part =0 2 x .8 =1.6 integer part =1 2 x .6=1.2 integer part =1 2 x .2 =.4 integer part =0 Solution is .000110 0110 0110 0110 0110 It never ends so that if one cuts it at some point, there is always an error- Look at http://www.ima.umn.edu/~arnold/disasters/patriot.html To find out why this was once very important.

  10. C++ for converting decimal to binary fractions double frac=.1; int digits=1,intpart; cout <<"."; while (digits <32 && frac!=0.) { frac=frac*2; intpart=frac; frac=frac-intpart; cout <<intpart; digits++; } Output: .0001100110011001100110011001100

  11. Decimal to binary fraction recursive function void fractobin(double frac, int digits); int main() { cout <<"."; fractobin(.1,1); //using a recursive function return 0; } void fractobin(double frac, int digits) { int intpart; if (digits >=32 || frac==0.) return; //base case else { frac=frac*2; intpart=frac; //get integer part cout <<intpart; fractobin(frac-intpart,++digits); //call self and increment digits return; } }