Citat:
Ursprungligen postat av
en kopp kaffe
För att få ett entydigt svar måste du ju ange hur många bitar som används. 101011 och 100110 är samtliga negativa om du har en 6-bitars representation. För 7 bitar eller mer är det två positiva tal.
Det spelar ingen roll. Resultatet, dvs skillnaden mellan de två talen, blir alltid (-5). Antingen 38 - 43 eller (-26) - (-21). Det är fördelen med tvåkomplement, att det wrappar runt. Skillnaden mellan t.ex. 101 och 100 är alltid 1 oberoende av om man väljer att behandla talen som positiva eller negativa, så en processor kan använda samma subtraktionsmetod för både unsigned numbers (0 till 63) och signed numbers (-32 till 31), så länge
du själv vet vad du hade lagrat i talen så att du vet hur du ska tolka resultatet.
Med 6 bitar blir resultatet 111011, med 16 bitar blir det 1111111111111011, båda betyder (-5).
Citat:
Ursprungligen postat av
en kopp kaffe
EXEMPEL: Om det är 6-bitars representation gäller att
101011 - 100110 = 101011 + 11010 = 1000101 = [Ingen overflow-flagga] = 101 = 5
Kontroll;
101011 = -10101 = -21
011010 = 26
-21 + 26 = 5 --> OK
Du bytte plats på TS termer