[Playlisten] [Impressum und Datenschutzerklärung]

05C.1 Zweierkomplement und Überlauf


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

einpaar Rechnungenin ZweierkomplementFrage ist was passiertwenn ich mit acht Bit Rechnermit folgendenRechnungenerstenssieben plus minusdreizehngeht daswenn sie das versuchen nachzuvollziehenwas im Rechner acht Bit Rechner passieren würdehundert dreizehn plusneunund was passiert bei hundert dreiundzwanzigplus neunwas käme jeweils wirklich ausguter sieben plus minus dreißig ?? sich vorstellen ?? interessiert mich eher der Vorgangwas ist die minus dreizehn Bitwas wir dann hier zusammengezähltund das Ergebniswie interpretiere ich das Ergebnis dannalso verdiente das mal nach was macht der Rechnerwenn sieihm das ja auftragen diese drei Rechenaufgabenich kann mir dieRegel für zwei Kompliment auch nie dauerhaft merken die weiß ich ein Monat und dann ist sie wieder weg aber was ich mir merken kann istdas die minus eins wird zu den acht Bit eins eins eins eins eins eins eins alle Bits gesetztdazu wird die minus eins dennwenn sie als dazu zählenplus einsSenat plus eins macht null eins im Sinn eins plus eins macht null eins im Sinn und so weiter dann kriegen sie wirklich nur raus die von der Übertrag schlichtwegdie minus eins muss sein alles auf eins gesetztdas kann ich mir merkendann weiß ich auch wieder wie das Rezept wardas Rezept ist Sie nehmen dieOrdinalzahljetzt die plus einskippen alle Bitsnullvier eins dazudie Ordinalzahlnehmen alle Bits kippen das Einerkomplementsicher in eine CD Tildealles negierendas Einerkomplementbilden und dann eins dazu zählen dann haben sie das Negative von der Zahlso müssen sie auf die minus dreizehn kommen und sie müssen sie danach eher umgekehrt auch wieder von dem Ergebnis zurückkommenauf eine erkennbare ZahlKomma was ich von Rezeptergibt ich habe die Zahl einsKomma Extrablatt hier so ich habe die Zahl binär einsamer Mal in acht Bitzahlbinär einswas ich mache ist dasEinerkomplementwieder so schön heißt alle Bits negierenich habe mal alle kippenRegieren aus Einzeldollars nur mit einsund dann eins draufganz normalwird das ganze mal Zahl wäre wieder stehtdas wird alle kippen und eins draufPunktdas ist die Regel für das Zweierkomplementwenn ich das Negativehaben wir von dieser Zahlbeliebig alle Bitsihrer eins drauf was der nicht nur für die eins geht sondern auch netterweise für alle anderen zahlendiese Zahl hier für dich verstehen als einsnormal gerechnetdiese Zahl dividiert man gar nicht versteht dieses Ergebnis für dich interpretieren als minus einsim Zweierkomplementdas soll das heißen ich ändere das Vorzeichen einer Zahl in dem ich das mache alle kippen und als dazu addierenund das schöne ist das ich dann eben mit den ganz normalen Rechenoperationplus minus mal weiter rechnen kann ohne dass etwas Schlimmes passiert ?? es wird nicht nur das erste Bit geändertsowas gibt's auch hat sich nicht wirklich durchgesetztes wird nicht das erste Bit geändert um von der einst zumindest als zukommen ?? das erste Bild steht dann zwar auf eins was sagt dessen negative Zahl aber der Rest hat sich auch geändert massiv geändertin dem Stile rechnen Sie mal minus dreizehn ausführen die Addition raus und wandeln das Ergebnis umso das ?? wieder erkennen kann was es denn istminus soundsoviel offensichtlichsodie erste die minus dreizehnminus dreizehn ich fange somit der dreizehn an was es dreizehn dezimalistnull null null nullich brauche die acht ich brauche die vielen habe ich zwölf und ich brauche die einstso sehr das bisher aus das ist die dreizehnjetzt kippe ich allerdingsdann habe ich eins eins eins eins null nulleins nullund ich addiere eins dazuinnerlich eins eins eins eins null null eins eins das ist also die minus dreizehn in diesem Spielmit zwei Kompliment arbeitesie die minus dreizehn in acht Bitso aus ein hundert eins null nulleins einsjetzt Komma die Addition ?? machen sieben und minus dreizehn ich schreibe die sieben hin null null null null null eins eins einsich schreibe die minus dreizehn eins eins eins eins null null eins einsAdditionwie bei einem Rieseeins plus einsist null und eins im Sinn als ob sie im Dezimalsystemfünf plus fünf rechnen kriegen Sie null und eins im Sinne eins bis eins S zwei schreiben die zwei hin eins null dass es die zweidas erklärt auch hier die nächste Frage wieder aufgetauchteseins plus eins plus eins ist drei Schreibenbinär drei hineinseinsdass es binär drei eins im Übertrageins hingeschriebeneins eins binär dreiSoja eins und null und eins S binär zwei sie schreiben in der zweiten Einzelübertragund die null danull null und eins ist offensichtlich einsdie oben nun also das ?? das ist alles eins eins eins einsso sieht das bisher auswird sich aber das negative Zahl sinkt nach eins anderen ist das negative Zahlich kann überlegen was für die negative Zahl das gewesen ist wir wissen welches war dezimal rechnen können aber der Rechner sich so klugich überlege mir was denn das für eineZahl eigentlich istes muss minus soundsoviel seinokay ich gebe alle Bits null null nullnull null eins null eins eins null einsaddiere eins dazu da bin ich bei null null null null null eins eins nulleins dazu addiertdie einzige zur zweiund das ist offensichtlich die dezimal sechseins eins null dezimal sechs das Eis dieses hier war dezimalminus sechsbis das auch gehört sieben plus minus dreizehnminus sechsdass es diese Zweierkomplementin Aktiondas passiert glücklicherweisealles hinter den Kulissen ohne dass wir daeingreifen müssensobald sie anfangen mit irgendwelchen Bits zu hantieren und sobald sie Überlauf habenwir das heikel das sollte man diese Geschichten wissen das die Zahlen nicht soabhängig at Face Valuenicht so genommen werden wie sie dastehensondern uminterpretiertwerdenalles was vorne Einsatz wird anders verstandenals Zweierkomplementeiner positiven Zahlund sie kriegen das Minuszeichenwenn irgendwo zu rechnen ist minus A minus B was macht das Gerät das Minuszeichen kriegen sie alsalle Bits kippen Komma dass alle Bits kippen und eins addieren dass es was das Minuszeicheneigentlich machtdas Zweierkomplementbilden eine Zahldas passiert hinter den Kulissenso und die beiden unten gucken sich in dem Sinne mal an auch mit Zweierkomplementdas heute dazu schreiben mit Zweierkomplementwas passiert hierwenn ich meine Zahlenmit Zweierkomplementinterpretierenwasglaubt der Rechner heraus kriegendie hundert dreizehn ins binäre ?? wenn man es jetzt zu Fuß macht dievierundsechzigist drin in der hundert dreizehnneunzehn hundert zwanzig ist nicht an die vierundsechzigist können die zweiunddreißigist sondern habe sechsundneunzigdie sechzehnist drinnen dann habe ich hundert zwölfund dann brauche ich noch einsdass wir jetzt zu Fuß übersetzt was sie hundert dreizehn in binär ist die professionelle Lösung ist hundert dreizehn das ich ?? drei das ist ungerade Zahl ist dann hintensofort die einzelnen Schreibensowieso sowieso plus ?? plus und so weiter plus eins an damit ungerade wird und anteilig das Ding durch zwei ganzheitlich durch zwei ?? wieder ?? ungerade Zahldieses Dingdiesem Fall nicht und soweit es geht besser aber das einigen wichtigirgendwie kommen sich auf diese Binärdarstellungfür die hundert dreizehndie neun Liter zu addierenPunkt das wären null null null null eins null null einseins plus eins macht null eins im Sinn?? Lotus Notes eins ist eins null groß null ist null null plus eins ist eins eins einseinsnull?? ist die Welt in Ordnungdavon steht ?? null das wird als positive Zahl verstanden wenn ich sage ich rechne mit Zweierkomplementund das ?? kommt raus wird das als positive Zahl verstandenes ist nichts schlimmes passiert?? so überlegen welche positive Zahl die Wissen zwischen hundert zwoundzwanzigbin doch anders kriegen können rechnennicht die eins aber die zweinicht die vierplus acht plus sechzehn ?? zwei ?? dreißig bis vierundsechzig ?? bisschen aufwendig würde folgendes tun wenn alle Witze gesetzt werden bis auf das erstnull sieben eins das wäre hundert siebenundzwanzighundert sieben zwanzig minus eins sind hundert sechsundzwanzigunterziehen sie hier noch vier ab hundert zweiundzwanzigdas ?? sind hundert zwei zwanzig dezimalkorrektob mit oder ohneZweierkomplementund hier unten gibt jetzt den Ärger ups das geht schiefdie erste Zahl sind zehn mehrist also null eins eins einsjetzt kommt zwei und acht dazu zehn mir eins null eins einsdas sind zehn mehrzu dieser Zahlnoch zehn addieren acht und zwei dazu dass wir die hundert drei zwanzig sein wenn sie dazu neun addieren ?? null null null nullnull null einseins plus eins macht zwei also eins null null hinschreiben ?? sind eins plus null plus eins zwei also eins null null hinschreiben ?? sind ja einaltes eins macht wieder zwei?? hinschreiben als im Sinn und dasselbe hier nur den Schreiben als Sinn neu hinschreiben als in den?? hinschreibeneins im Sinn unterschiedene einsund das wird als negative Zahl verstanden sobald ich sage ?? ?? Zweierkomplement?? Maschinenwird das als negative Zahl gelesen wegen der einst erfordernwir können uns überlegen was das positiv wärewenn ich davon das ZweierkomplementBilderalle Bits kippen ?? nullvier mal die eins wir mal die eins einmal die nullzweimaldie einsund da jetzteins drauf addiereneins plus eins macht null und eins im Sinn eins plus eins macht nullund eins im Sinn hier steht nach einsso die null und diese ein tausend ?? Betrag macht eins und es geht dir weiter als das eins eins nulleinseins nulldas Negative von dieser Zahl kriege ich eigentlich raus sie sehen welche Zahl das sein muss wenn ihr alle Bits der vornesetzt während ?? nicht hundert sieben zwanzig wird die zwanzig minus eins minus zweimachthundert vierundzwanzigdiese Zahl hier war also eigentlichminus hundert vierundzwanzigund dass es offensichtlichfalschan der Stelleso darf nicht seindas Zweierkomplementreitet einen an der Stelle rein servieren zwei positive Zahlenund kriegeneine negative rausupsdas ist die Idee das am Zahlenstrahlmal auf zu malen was da passierteins Zahlenstrahlnull?? zwei tausend zwo hundert fünfundfünfzigspannendist die hundertsiebenundzwanzigund ist die hundert achtundzwanzigund dieminus hundert siebenundzwanzigund diehundert achtundzwanzigdie Zahlen ohne Vorzeichenan Seins sollten Sie in den Videos gelernt habendie Zahlen ohne Vorzeichen leben quasi auf dem Gebiet hier dieacht Bitzahlenohne Vorzeichendas in dieser an Seinszahlen sie würden schreiben was von Franz Saint Gerrit ??die hätten diesen Bereichaber ich benutze dieselben Bitmustermit dem Zweierkomplementfür die üblichen Zahl die mit Vorzeichenfür den Bereich von minus hundertachtundzwanzigbis plus hundert sieben zwanzig das ist acht Bitmit Vorzeichenals Zweierkomplementundjetzt geht das quasi periodisch weiterwenn sie hier über die hundert sieben zwanzig rausgehensind ?? hierhundert drei zwanzig plus neun sollten ja hundertzweiunddreißigseinwenn sie über diehundert sieben zwanzig rausgehenhundert zweiunddreißigkommen sie praktisch dahinten wiederdas wiederholt sich periodischkommen da wieder bei der minus hundert vierundzwanzigdas ist dann eigentlich auch der Trick der dahinter stehtdann das sie das so zyklisch schließtwenn ich auf die hundert sieben zwanzig eins drauf addierekomme ich zu der minus hundert achtundzwanzigdas passiert hinter den Kulissen dass es dieser Überlauf beim Zweierkomplementdie gegenwärtig negative Zahlje nachdem typischerweise negative Zahlenmit richtig heftigen Überlauf habenje nach RechenoperationKing liefert sogar positive Zahlen irgendwie völlig wild aussehendann wenn sie Überlaufohne Vorzeichen haben das was in C Anzeigenteilsan Sainttypenan sein Schar an Seins in Tanz sein short an sein Punktwenn sie dann Überlauf haben über die zwo hundert fünfundfünfzig oder was auch immer dabei den größeren Typen ist kommt sie von da wiederdie kriegenZahlen ab null aufwärtskeine negativen Zahl seiner Laufwerks aber trotzdem falschhat ebenein Versatz von zwo hundert und fünfzig drin bei den Zahlen ohne Vorzeichenbleibt esnull oder positivdurch diesen Versatz von zwo hundert und fünfzigbei den Zahlen mit Vorzeichen Zweierkomplementbringt sie dann zigmal negative Zahlenes kann ziemlich viel Unsinn passierenwas man hauptsächlich im Kopf behalten muss in den meisten Cesprachenist das dieses Phänomen passieren muss dass sie an Überlauf haben könnendas ihre Rechenergebnisseso groß werden könnte sie nicht mehr den Bereich passen acht Bit eben minus hundert achten zwanzig bis plus hundert sieben zwanzigwenn Ergebnisse nicht meinen Bereich passenpassiert gar fürchterlicheskriegen sowas dann raus die Summe zwar positive Zahlen ist minus hundert vierundzwanzigdas ist das aller wichtigste was man davon behalten mussich?? das hier noch mal mit in auf diesem System sind auf diesem System ist der sechzehn Bit sichauf anderen zwei dreißig bitte ich esse sechzehn Bit ichhatte schon ?? MengeHolz dann an der Stelle der hat es bei zwei dreißig tausend noch was auf acht Bit ?? zwei hundert sieben zwanzig auf ?? obenmit Vorzeichenund bei sechzehn Wetters bei zwei dreißig tausend noch was draufalso immer das sowas hier machen Entar gleichwas einmalzwanzig tausendin B gleich zwanzig tausend?? Trennstrich?? das Gesicht ?? überlegen ist es bisschen mehr heutige sachsechzehnBitwas will uns der Rechner sagen was er aus C rausgekriegt ?? nicht vierzig tausend?? was Wetter und sagen was sie ist zwischen zwanzig tausend und zwanzig tausend addierendas Geld jetzt ?? Komma mit Beistrich Papier rauskriegen manchem Rechner nachgucken hier aber gleich unzulänglich Komma mit Bleistift und Papier was passiert wenn sie zwanzig tausend und zwanzig tausend Tieren in ?? mit sechzehn Bitmit sechzehn Bit mit Vorzeichenist eben nicht bis hundert sieben zwanzig ?? bis zwei dreißig tausend noch wasso genau muss man sich wissen zwei dreißig tausend noch was auf die Größenordnung stimmt das Ergebnis ist ja sowieso falsch ??möchte wissen in welcher Größenordnungist nicht das falsche Ergebnis liegtals mit sechzehn Bitmit sechzehn Bit weder Zahlenstrahlso aushier oben ist bei zweiunddreißigtausendirgendwas Feierabendeinstellen die Gaming erinnernund nach unten hin ist beizweiunddreißig tausendnoch was Feierabendunten geht's mal wieder ein zweiter als Proben mit sich an acht bitte innert minus hundert achtundzwanzig bis plus hundert sieben zwanzig jeder selber ?? ich kann mich nicht ?? die letzten drei Stellen erinnern aber ich weiß das auf dieser Seite eins weiter nach links geht ist die nullsowas heraus haben wollen ist eine vierzig tausend zwanzig tausend bis zwanzig tausend ?? wir wollen eigentlich vierzig tausend raus habenwill sagen wir sind etwa um acht tausendaußerhalb von den Bereichjetzt schlägt das zyklische wieder zubelegenum acht tausendungefähr acht tausend?? über der minus zweiunddreißigtausend was ich also als Ergebnis erwarte ist minus zweiunddreißig tausend plus acht tausendirgendwasbeiminusvierundzwanzig tausend ?? das würde ich als Ergebnis erwartennach dem selben Mustergeheüber die Grenze zwei dreißig tausend noch wasum acht tausend rüberund lande dannzyklisch zurückverfolgthierum acht tausend über der unteren Grenzein das bei mir zweiundzwanzig tausend ?? das könnte man sich jetzt mit den einzelnen Bits überlegen aber das wär Mordan damit sechzehn Bit zu gucken was der Rechner jetzt Wiki sagtsieminus hundert zwanzig tausend fünf hundert noch fast Anlagen doch gar nicht so falsch?? die letzten Stellen sind an der ?? sind für mich der ziemlich uninteressantich wollte wissenwas passiert von Unsinn passiert Unsinn und welcher Unsinn passiert was sie kriegen dann tatsächlich Blödsinn aus der Rechner rechnetwas er rechnen will sozusagendachte sie nicht in dieser Sprache nicht in den meisten Sprachen teilte ihm das nicht mit?? erfahren es nicht ?? müssen sich vor Gedanken drüber gemacht haben das so ein bisschen basiert die Summe zweier positiver Zahlen plötzlicheine negative Zahler eine Maßnahme wäredass sie mehr Platz lassen sie sagen oder speichern das in Blondvariablensehenwas ich auf diesem System zu lang sagtvierzig tausend Wassermann sagt was man gucken wie viel Bits lang auf diesem System hat Samba Binärformatzwei dreißigund da weiß man dann irgendwann auswendig beziehungsweise es bei Windows vor alten Zeiten auf solche Grenzen gestoßenwerden zweiunddreißig Bit Zweitligazwei Milliardendas Schluss bei dem lang auf diesem System auf einer Systemist langhöchstwahrscheinlichvierundsechzigBit sichunddas wird man kaum Gefühl kriegen mit irgendwelchen vernünftigen werden das aber nicht zu überlaufen sind normalerweise?? ich war trotz immer wieder lauter ins dareinmit einem lang zurecht dauert natürlich länger und es braucht doppelt so viel Speicherplatzmuss ?? kleine Maschine hatwird dann weiterhin mit ein Kind rechnen wenn es geht und weitere nur ein Schaden oder nur ein Schaf abspeichernund Speicherplatz zu sparennoch paar andere Sachen die überraschend sein könnten?? nicht das sie rechnen die Variable D soll sein ?? groß Bdurch zweidie Variable D soll das sein und die Variable E soll dieses seinA halbeplusdiehalbewas steht in D und Esteht das Selbe in D und Enicht einzelne Bits ist nicht so spannend was wird passieren wenn sie das Rechnen steht immer zwangsläufig dasselbe in D und EHorndas über den sich mal prinzipiellnicht unbedingt jedes einzelne Bit angucken des sechzehn Ziffer müssengenaudie geht schief wegen des ÜberlaufsA plus B führt zum Überlaufdas wird in sechzehn Bit gerechnet ab groß Bfür zu überlaufengibt's minus zwanzig tausend noch was durch zweiDas heißt David irgendwas sein von wegen minuszehn tausend noch fastdie Hälfte von minus zwanzig tausend noch wasganz brutal hier nach dem überlaufen weitergerechnet?? okay also Degen geht schiefund äh wird netterweise funktioniertzwanzig tausend durch zwei ist zehn tausend fürzwanzig tausend durch zwei zehn tausend E wird zwanzig tausend seinInternet funktioniertwie sie das diese beiden D und E mathematischidentisch aussehenabernicht in Formate schweißen wirklich numerischausgelobten Zahlen rauskommt ist deutlich verschieden zwischen D und EEbit funktioniert die wird nicht funktionierenmuss keiner was Rundungsfehlernsagen es ist eine andere Geschichte hier aber erst mal ist äh die sicheresicherereVarianteals diehier sehen Sieminus zwanzig tausend noch was davon die Hälfte das ist die und er hat funktioniertalso muss ich tatsächlich Gedanken machen wie man Formen hin schreibt und stellteso das sie nicht zwischendurch ein Überlauf produzierenmit in der der Variablen reingehen oder mit einer Variablen reingehenmacht siealle Rechenschritte in der Jobund was dann ZwischendurchlichenIntershop Asthat ein kleines Problem auch wenn das Ergebnis zum Schluss wieder in Wetter passen sollte mich eigentlich mathematischer seits soll das Ergebnis zwanzig tausendManager passen oder Zwischenergebnis läuft aber ?? Bruder deshalb ist es kaputtanaber noch mal als reinmentaleÜbunggibt'snoch weitere Unterschiede zwischenD und eben wenn ich sage AS dreizehn und B ist fünfzehnwas wird dann mit D und E passieren AS dreizehn und B ist fünfzehnwas absurderweisegeht's nicht nur bei Überlauf ein Unterschiedzwischen diesen beiden Sachen die mathematisch äquivalent aussehen sondern es gibt auch bei harmlosen Zahlen ein Unterschiedwenn sie hier A plus B rechnen?? dreizehn plus fünfzehn achtundzwanzigdurch zweigibt vierzehnokayaber wenn sie hierdreizehn durch zwei Rechnenmit ?? runter gerundeterrechnete einzig zwölf durch zwei nicht dreizehn durch zwei außergerichtliche sechs rauswirklich der sieben raussechs bis sieben sind aber dreizehnD mit vierzehn sein Ewert dreizehn seindurch diesen Rundungseffektso sieht das aus der unter dreizehnter obere vierzehnsowas muss im Hinterkopf behaltenÜberlaufkann zuschlagenund Rundung kann zuschlagenund beides haben sie nicht in der Mathematik in den ersten beiden Semestern gelernt es gelten nicht die üblichen Rechengesetzees ist nicht A plus B halbedasselbe wie A halbe plus B habe das muss man dein Hinterkopf behalten der Rechnermacht das wozu er programmiert istder hält sich nicht an die Rechengesetze der Mathematik