4. Binär aritmetik


4.1. Ange decimala motsvarigheten till följande 8-bitars tal givna på binär form. a) 01010101 b) 00111100 c) 10101010 d) 11000011 a) (01010101)2 = (85)10 b) (00111100)2 = (60)10 c) (10101010)2 = (170)10 d) (11000011)2 = (195)10

4.2 Ange decimala motsvarigheten till följande 8-bitars tal givna på tvåkomplementsform. a) 01010101 b) 00111100 c) 10101010 d) 11000011 a) (01010101)2 = (85)10 b) (00111100)2 = (60)10 c) (10101010)2 = (-86)10 d) (11000011)2 = (-61)10

4.3 Ange följande decimala tal som 8-bitars binära tal på tvåkomplementsform. (Ledning, bestäm först binär form av talet utan minustecken, tvåkomplementera därefter) a) -10 b) -38 c) -42 d) -56 a) -10 = -(0000 1010)2 = 1111 01102 b) -38 = -(0010 0110)2 = 1101 10102 c) -42 = -(0010 1010)2 = 1101 01102 d) -56 = -(0011 1000)2 = 1100 10002

4.4 Utför (visa med papper och penna) följande additioner (R=X+Y) av 8-bitars tal givna på binärform. Ange X,Y och R på decimal form, ange dessutom hur flaggorna C och Z påverkas av operationerna. a) X = 00100100 Y = 01000100 b) X = 10111100 Y = 01000100 c) X = 10000001 Y = 10000001 d) X = 01001010 Y = 00110101 e) X = 01001010 Y = 01001010 Operationen innebär X=36, Y= 68, R= 104, (36+68=104). Eftersom talen betraktas på binärform är talområdet (8 bitar) 0-255 och således resultatet korrekt. Detta indikeras också av att C-flaggan är 0. Operationen innebär X=188, Y= 68, R= 0, men 188+68=256 ! Eftersom talen betraktas på binärform är talområdet (8 bitar) 0-255 och således resultatet utanför talområdet. Carryflaggan sätts därför till 1, dessutom blir i detta fall innehållet i registret 0 varför Z-flaggan också sätts till 1. Operationen innebär X=129, Y=129, R=2, men 129+129=258! Eftersom talen betraktas på binärform är talområdet (8 bitar) 0-255 och således resultatet utanför talområdet. Carryflaggan sätts därför till 1, resultatet i registret är dock skilt från 0 varför Z-flaggan sätts till 0. Operationen innebär X=74, Y=53, R=127. Eftersom talen betraktas på binärform är talområdet (8 bitar) 0-255 och således resultatet korrekt. Detta indikeras också av att C-flaggan är 0. Operationen innebär X=74, Y=74, R=148. Eftersom talen betraktas på binärform är talområdet (8 bitar) 0-255 och således resultatet korrekt. Detta indikeras också av att C-flaggan är 0.

4.5 Utför (visa med papper och penna) följande additioner (R=X+Y) av 8-bitars tal givna på tvåkomplementsform. Ange X,Y och R på decimal form, ange dessutom hur flaggorna N, V och Z påverkas av operationerna. a) X = 00100100 Y = 01000100 b) X = 10111100 Y = 01000100 c) X = 10000001 Y = 10000001 d) X = 01001010 Y = 00110101 e) X = 01001010 Y = 01001010 Operationen innebär X=36, Y= 68, R= 104, (36+68=104). Eftersom talen betraktas på tvåkomplementsform är talområdet (8 bitar) -128- +127 och således resultatet korrekt. Inget spill alltså och av teckenöverläggningen ser vi hur V-flaggan sätts till 0. Resultatet är skilt från 0 och därmed sätts Z-flaggan till 0. Operationen innebär X=-68, Y= 68, R= 0,(-68+68=0). Eftersom talen betraktas på tvåkomplementsform är talområdet (8 bitar) -128- +127 och således resultatet inom talområdet. Inget spill alltså och av teckenöverläggningen ser vi hur V-flaggan sätts till 0, dessutom blir i detta fall innehållet i registret 0 varför Z-flaggan sätts till 1. Operationen innebär X=-127, Y=-127, R= 2 men -127-127 = -254. Eftersom talen betraktas på tvåkomplementsform är talområdet (8 bitar) -128- +127 och således resultatet utanför talområdet. Av teckenöverläggningen (två negativa tal adderas men resultatet blir positivt) ser vi att V-flaggan sätts till 1 som indikator på spillet. Resultatet är skilt från 0 varför Z-flaggan sätts till 0. Operationen innebär X=74, Y= 53, R= 127, (74+53=127). Eftersom talen betraktas på tvåkomplementsform är talområdet (8 bitar) -128- +127 och således resultatet korrekt. Inget spill alltså och av teckenöverläggningen ser vi hur V-flaggan sätts till 0. Resultatet är skilt från 0 och därmed sätts Z-flaggan till 0. Operationen innebär X=74, Y=74, R= -108, resultatet är alltså fel. Talen betraktas på tvåkomplementsform och talområdet (8 bitar) är -128- +127 och således resultatet inom talområdet. Av teckenöverläggningen (två positiva tal adderas men resultatet blir negativt) ser vi dock att V-flaggan sätts till 1 som indikator på spillet. Resultatet är skilt från 0 varför Z-flaggan sätts till 0.

4.6 Utför (visa med papper och penna) följande subtraktioner (R=X-Y) av 8-bitars tal givna på binärform. Ange X,Y och R på decimal form, ange dessutom hur flaggorna C och Z påverkas av operationerna. Flaggan C förutsätts vid denna operation representera en lånesiffra (”borrow”) till den mest signifikanta positionen. a) X = 01111110 Y = 01010000 b) X = 01010000 Y = 01111110 c) X = 11011110 Y = 00100010 d) X = 00100010 Y = 11011110 Operationen innebär X=126, Y=80, R=46. Eftersom talen betraktas på binärform är talområdet (8 bitar) 0-255 och således resultatet korrekt. Detta indikeras också av att C-flaggan är 0, dvs. ingen lånesiffra genereras från position c8. Operationen innebär X=80, Y=126, R=210. Resultatet är uppenbarligen fel eftersom negativa tal inte kan representeras av talområdet. (Eftersom talen betraktas på binärform är talområdet 0-255). Detta indikeras också av att C-flaggan är 1, dvs. lånesiffra genereras från position c8. Operationen innebär X=222, Y=34, R=188. Eftersom talen betraktas på binärform är talområdet (8 bitar) 0-255 och således resultatet korrekt. Detta indikeras också av att C-flaggan är 0, dvs. ingen lånesiffra genereras från position c8. Operationen innebär X=34, Y=222, R=68. Resultatet är fel eftersom negativa tal inte kan representeras av talområdet. (Eftersom talen betraktas på binärform är talområdet 0-255). Detta indikeras också av att C-flaggan är 1, dvs. lånesiffra genereras från position c8.

4.7 Utför (visa med papper och penna) följande subtraktioner (R=X-Y) av 8-bitars tal givna på binärform (dvs. tal utan tecken). Subtraktionerna ska utföras som addition av 2-komplement, dvs. R = X + (2~Y). Ange X,Y och R på decimal form, ange dessutom hur flaggorna C och Z påverkas av operationerna. Eftersom subtraktionen utförs som addition av 2-komplement förutsätts flaggan C vid denna operation representera inversen av en lånesiffra (”borrow”) till den mest signifikanta positionen. a) X = 01111110 Y = 01010000 b) X = 01010000 Y = 01111110 c) X = 11011110 Y = 00100010 d) X = 00100010 Y = 11011110 Det gäller att X=126, Y=80, korrekt resultat R=46. Operationen innebär X=126, 2~Y=176, R=46 eftersom talen betraktas på binärform med talområdet 0-255 och alltså är resultatet korrekt. Detta indikeras också av att C-flaggan är 0, dvs. minnessiffran i position c8 är 1. Det gäller att X=80, Y=126, korrekt resultat R=-46. Operationen innebär X=80, 2~Y=130, R=210. Resultatet är uppenbarligen fel eftersom negativa tal inte kan representeras av talområdet. (Eftersom talen betraktas på binärform är talområdet 0-255) . Detta indikeras också av att C-flaggan är 1, dvs. minnessiffran i position c8 är 0. Det gäller att X=222, Y=34, korrekt resultat R=188. Operationen innebär X=222, 2~Y=222, R=188. Eftersom talen betraktas på binärform är talområdet (8 bitar) 0-255 och således resultatet korrekt. Detta indikeras också av att C-flaggan är 0, dvs. minnessiffran i position c8 är 1. Det gäller att X=34, Y=222, korrekt resultat R=-188. Operationen innebär X=34, 2~Y=34, R=68. Resultatet är fel eftersom negativa tal inte kan representeras av talområdet. (Eftersom talen betraktas på binärform är talområdet 0-255) . Detta indikeras också av att C-flaggan är 1, dvs. minnessiffran i position c8 är 0.

4.8 Utför (visa med papper och penna) följande subtraktioner (R=X-Y) av 8-bitars tal givna på tvåkomplementsform (dvs. tal med tecken). Subtraktionerna ska utföras som addition av 2-komplement, dvs. R = X + (2~Y). Ange X,Y och R på decimal form, ange dessutom hur flaggorna N, V och Z påverkas av operationerna. a) X = 01111110 Y = 01010000 b) X = 01010000 Y = 01111110 c) X = 11011110 Y = 00100010 d) X = 00100010 Y = 11011110 e) X = 01000000 Y = 10111111 Det gäller att X=126, Y=80, korrekt resultat R=46. Operationen innebär X=126, 2~Y=-80, R=46 . Eftersom talen betraktas på tvåkomplementsform är talområdet (8 bitar) -128- +127 och operationens resultat korrekt. Inget spill alltså och av teckenöverläggningen ser vi hur V-flaggan sätts till 0. Resultatet är skilt från 0 och därmed sätts Z-flaggan till 0. Det gäller att X=80, Y=126, korrekt resultat R=-46. Operationen innebär X=80, 2~Y=-126, R=-46. Operationens resultat är korrekt. Inget spill alltså och av teckenöverläggningen ser vi hur V-flaggan sätts till 0. Resultatet är skilt från 0 och därmed sätts Z-flaggan till 0. Det gäller att X=-34, Y=34, korrekt resultat R=-68. Operationen innebär X=-34, 2~Y=-34, R=-68. Operationens resultat är korrekt. Inget spill alltså och av teckenöverläggningen ser vi hur V-flaggan sätts till 0. Resultatet är skilt från 0 och därmed sätts Z-flaggan till 0. Det gäller att X=34, Y=-34, korrekt resultat R=68. Operationen innebär X=34, 2~Y=34, R=68. Operationens resultat är korrekt. Inget spill alltså och av teckenöverläggningen ser vi hur V-flaggan sätts till 0. Resultatet är skilt från 0 och därmed sätts Z-flaggan till 0. Det gäller att X=64, Y=-65, korrekt resultat R=129. Operationen innebär X=64, 2~Y=65, R=-127. Operationens resultat är fel. Av teckenöverläggningen (två positiva tal adderas men resultatet blir negativt) ser vi att V-flaggan sätts till 1 som indikator på spillet. Resultatet är skilt från 0 varför Z-flaggan sätts till 0.