Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2013-10-31, 17:57
  #1
Medlem
Hej! jag går en grundkurs inom Datavetenskap och en av våra uppgifter lyder: Beräkna! 100110 - 101011 i basen 2.
Har gjort detta med både Tvåkomplement metoden och basic subtraktion.
Jag fick båda ggrna svaret: 111011

Kommer båda gångerna fram till samma svar men skulle veta ifall det verkligen stämmer för när jag kollar på "online binary calculators" så får jag ngt svar med minus framför men binära tal använder ju inga minus tecken så vet inte riktigt vad som stämmer...

Här är mina beräkningar. Samma svar med den andra metoden som sagt.

Gyazo basic substraktion: http://gyazo.com/5360f7da90192ed48d7d08b4a5f2bef8
Gyazo tvåkomplement: http://gyazo.com/bc94a0fafd02d3da55966bd1093cfc52
Stämmer de eller får ni ngt annat svar? Upskattar all hjälp jag kan få! Tack!
__________________
Senast redigerad av ironmaiden96 2013-10-31 kl. 18:08.
Citera
2013-10-31, 18:04
  #2
Medlem
bjornebarns avatar
Vill du veta om ditt svar är rätt är det u bra om du skriver upp det också.

Hur som helst så kan ett binärt tal tolkas så att om siffran längst till vänster är 1 så är talet negativt och om den är 0 så är talet positivt. Om man tex har en byte med denna typ av notation så har man således
xabc defg

och då kommer abc defg vara själva värdet, medan x är tecknet.
Citera
2013-10-31, 18:07
  #3
Medlem
Citat:
Ursprungligen postat av bjornebarn
Vill du veta om ditt svar är rätt är det u bra om du skriver upp det också.

Hur som helst så kan ett binärt tal tolkas så att om siffran längst till vänster är 1 så är talet negativt och om den är 0 så är talet positivt. Om man tex har en byte med denna typ av notation så har man således
xabc defg

och då kommer abc defg vara själva värdet, medan x är tecknet.

Jo jag vet det. Men det borde inte ske med domhär uträkningarna jag gjort med vertikal subtraktion (basic) och vertikal addition (tvåkomplements metoden). beräkningarna har jag länkat till på gyazo var svaret också finns. Vore fint om någon kan bekräfta att de stämmer eller är icke korrekta! tack!
Citera
2013-10-31, 18:27
  #4
Medlem
Nej, det är fel.

Eftersom 101011 är större än 100110 kommer dit tal bli negativt.

Jag har inte står erfarenhet av dessa typer av uträkningar så jag är inte bekant med metoderna du använde dig av men jag visar nu hur jag tänker lite hastigt.

101011 = 10000 + 1000 + 10 + 1
100110 = 10000 + 100 + 10

100110 - 101011 = (10000 + 100 + 10) - (10000 + 1000 + 10 + 1) =
= 100 - 1000 - 1 = -(1000 + 1 - 100) = -(1001 - 100) =
= -("0201" - 100) = -(101) = -101.
Citera
2013-10-31, 18:33
  #5
Medlem
Citat:
Ursprungligen postat av Lokf
Nej, det är fel.

Eftersom 101011 är större än 100110 kommer dit tal bli negativt.

Jag har inte står erfarenhet av dessa typer av uträkningar så jag är inte bekant med metoderna du använde dig av men jag visar nu hur jag tänker lite hastigt.

101011 = 10000 + 1000 + 10 + 1
100110 = 10000 + 100 + 10

100110 - 101011 = (10000 + 100 + 10) - (10000 + 1000 + 10 + 1) =
= 100 - 1000 - 1 = -(1000 + 1 - 100) = -(1001 - 100) =
= -("0201" - 100) = -(101) = -101.

Vi har inte lärt oss något sådant. Men negativa binära tal skrivs väl inte med minus tecken? Det är vad jag har lärt mig. Endera skrivs det genom komplement metoden (Det positiva talet inverteras) eller två komplement metoden (att positiva talet inverteras och 1 adderas till.)

Förstår inte riktigt nu...
Citera
2013-10-31, 19:27
  #6
Medlem
en kopp kaffes avatar
Citat:
Ursprungligen postat av ironmaiden96
Vi har inte lärt oss något sådant. Men negativa binära tal skrivs väl inte med minus tecken? Det är vad jag har lärt mig. Endera skrivs det genom komplement metoden (Det positiva talet inverteras) eller två komplement metoden (att positiva talet inverteras och 1 adderas till.)

Förstår inte riktigt nu...

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.

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

Är det så att dina två tal inte är skrivna i tvåkomplement får du:
http://www.wolframalpha.com/input/?i...e+2+to+base+10
__________________
Senast redigerad av en kopp kaffe 2013-10-31 kl. 19:29.
Citera
2013-10-31, 20:05
  #7
Medlem
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.

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

Är det så att dina två tal inte är skrivna i tvåkomplement får du:
http://www.wolframalpha.com/input/?i...e+2+to+base+10
Tack för ditt svar! Förstår fortfarande inte helt. I uppgiften står det ingenting om hur många bitar som används så jag antog att de båda var positiva. Också så räknade du talen fel väg. dvs. du fick ju 101 som positivt men det borde väl bli -101 eftersom ett mindre tal tar minus ett större?
Också vad betyder [Ingen overflow-flagga]?
Här är en screen av uppgiften för att göra det mera klart. Det är altså nr 2 jag har problem med.
http://gyazo.com/2a6b6aed51b0116cf42a1f82a18814a6
Metoderna givna i kompendiet var vanlig subtraktion, enkomplement-, och två komplementsmetoden.
Citera
2013-10-31, 20:15
  #8
Medlem
en kopp kaffes avatar
Citat:
Ursprungligen postat av ironmaiden96
Tack för ditt svar! Förstår fortfarande inte helt. I uppgiften står det ingenting om hur många bitar som används så jag antog att de båda var positiva. Också så räknade du talen fel väg. dvs. du fick ju 101 som positivt men det borde väl bli -101 eftersom ett mindre tal tar minus ett större?
Också vad betyder [Ingen overflow-flagga]?
Här är en screen av uppgiften för att göra det mera klart. Det är altså nr 2 jag har problem med.
http://gyazo.com/2a6b6aed51b0116cf42a1f82a18814a6
Metoderna givna i kompendiet var vanlig subtraktion, enkomplement-, och två komplementsmetoden.

Om du ska invertera talet, hur många bitar ska du invertera? Då är det relevant hur många bitar som används.

Nej, i 6-bitars tvåkomplement blir det 101. Båda talen är då negativa, se uträkningen. Overflow kan uppträda i tvåkomplement när du summerar två negativa tal och får ett positivt, eller två positiva och får ett negativt.

Om du omvandlar dina tal till 7-bitars tvåkomplement borde det funka bra. Men oavsett metod ska du hamna på 5 eller 101.
Citera
2013-10-31, 20:33
  #9
Medlem
Citat:
Ursprungligen postat av en kopp kaffe
Om du ska invertera talet, hur många bitar ska du invertera? Då är det relevant hur många bitar som används.

Nej, i 6-bitars tvåkomplement blir det 101. Båda talen är då negativa, se uträkningen. Overflow kan uppträda i tvåkomplement när du summerar två negativa tal och får ett positivt, eller två positiva och får ett negativt.

Om du omvandlar dina tal till 7-bitars tvåkomplement borde det funka bra. Men oavsett metod ska du hamna på 5 eller 101.

Hur vet du att talen är negativa när det inte står hur många bitar som gäller i uppgiften?
Och skall man skriva båda talen i tvåkomplement? För enligt mitt studie material så ska bara det andra talet skrivas i tvåkomplement. Se här: http://gyazo.com/c42fe535c33fdc5affe69f417168c8c2

Och när jag kollar med calculators som kalkylerar binära talet 100110 -101011 (och i den ordningen för så står det i uppgiften) så ger de alltid -101 och inte plus...
Citera
2013-11-01, 09:48
  #10
Medlem
en kopp kaffes avatar
Citat:
Ursprungligen postat av ironmaiden96
Hur vet du att talen är negativa när det inte står hur många bitar som gäller i uppgiften?
Och skall man skriva båda talen i tvåkomplement? För enligt mitt studie material så ska bara det andra talet skrivas i tvåkomplement. Se här: http://gyazo.com/c42fe535c33fdc5affe69f417168c8c2

Och när jag kollar med calculators som kalkylerar binära talet 100110 -101011 (och i den ordningen för så står det i uppgiften) så ger de alltid -101 och inte plus...

Eftersom du hade tva stycken 6-bitarstal ar det inte helt taget ur luften att anta att det ju ar 6 bitar som galler.

Bada talen ska ju skrivas i tvakomplement, men i det positiva fallet ar det samma som den vanliga representationen.

http://sv.wikipedia.org/wiki/Tv%C3%A5komplementsform
__________________
Senast redigerad av en kopp kaffe 2013-11-01 kl. 09:51.
Citera
2013-11-01, 11:55
  #11
Medlem
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
__________________
Senast redigerad av alef-noll 2013-11-01 kl. 12:16.
Citera
2013-11-01, 13:18
  #12
Medlem
Citat:
Ursprungligen postat av ironmaiden96
Också vad betyder [Ingen overflow-flagga]?

http://troligen.se/overflow.png

Addition och subtraktion wrappar runt, så du får alltid resultatet modulus 64 (2 upphöjt till antalet bitar). Antingen som ett tal mellan -32 och 31 eller mellan 0 och 63 beroende på hur du tolkar datat. -1 har samma representation som 63, -2 samma som 62 osv. CARRY-flaggan påverkas när en addition eller subtraktion går över gränsen mellan 000000 och 111111 framlänges eller baklänges. Om du tolkar binärdatat som signed numbers spelar det ingen roll, det är bara en övergång mellan 0 och -1, men om du räknar med unsigned numbers har du "förlorat" information. Den informationen finns i carryn plus vetskapen om vilken operation du utförde, addition eller subtraktion (är det egentliga resultatet 64 lägre eller 64 högre)?

OVERFLOW-flaggan fungerar likadant, men för gränsen mellan 011111 och 100000. För unsigned numbers har den ingen betydelse, det är bara en övergång mellan 31 och 32, men för signed-räkning har du hoppat mellan 31 och -32.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback