[Playlisten] [Impressum und Datenschutzerklärung]

05A.1 Beispiele Zweierkomplement, Überlauf, signed und unsigned


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

dasRechnen mit den Binärzahnsbesonders ZweierkomplementdasWort ?? bisschenvertiefend nachbohrenda wohl immer vertiefend Nachbohrenhörendiese Rechnung minus fünf plus zwölfauf die Zahl minus fünfund ich möchte zwölf dazu addierennicht dezimal klarminus fünf plus zwölf macht alsosieben davon ich mal das sie als alleselber rechnen binär mit Zweierkomplementnähermit Zweierkomplementin acht BitZweierkomplementman könntePunktman könnte Binärzahlmit Vorzeichen auch anders machensie mittlerweile Gleitkomma zahlen sowieso damit das Vorzeichen einfach getrennt gespeichertbei den ganzen Zahlen ist das raffinierter und es auch das übliche des ZweierkomplementLösung zu machen?? dasselbe Rechenwerk hat dieselbenlogischen Gatter dieselben Transistorenum mitganzen Zahlenzu rechnen die ab null aufwärts lieber mit ganzen Zahlen zu rechnen die auch negativ sein Könnenmuss die ganze Hardware nicht doppelt Warnung der Spezialisten in der Hardware des Adidas durchgesetzt mit den Zweierkomplementam Anfang denkt man auch was von Ärgersich auszudrückenwas für ein Klimmzug um negative Zahlen zu machen aber die Hardware wird einfacher und das hat dann zum Schlussden Ausschlag gegebenals Job für sie übersetzen sie die minus fünf Mal in acht Bit mit Zweierkomplementzwölf und so weiter und dann mal die Addition machen das ich gucken kann ob das funktioniertbessermit der zwölf anNamenich brauche nicht vierundsiebzig ?? nicht hundert achtundzwanzigstensechzig baut auch nicht zwei dreißig Boy auch nicht sechzehn brauche ich nichteine acht brauche icheine vier brauche ich die zwei brauche ich nicht die eins brauche ich nicht dass wir die zwölfso weit waren es glaube ich nur mal die eins Nummer die zwei einmal vier einmal die acht undeinen ganz anderen ?? auch seindiesmit den ZweierkomplementFoyerfunktioniert nicht so wie man sich das vorstellenkönntedieder erste Ansatz um negative Zahlen zu machen wäre auch ich schreibe fünf in einsnicht die zweiviernull null null null nullund muss es in Wien minus machendas negativZweierkomplementist das ein grandioser Trickerzählt einfach negativ weitereine neue FolieVorbereitungdannwenn das die null ist die null soll auch weiter die null seindezimaldas man hier dezimalund hier schreibe ich mal binär mitderZweierkomplementzweierKomplimentandie null soll die null seines Berichts die minus eins darstellenwenn ich hier von eins abziehe??es sieht haarsträubendaus was passiert wenn ich von der null null null null ?? eins abziehendassinnvollsteaber das kostet fünf Minuten Überlegung das sinnvollste ist das auch wenn es ganz haarsträubendaussiehtdie Begründung ist voll wenn sie zu der minus eins eine eins dazu zählen Zinsen die null rauswenn sie zudieser Zeit hier nach eins dazu zählenzu der Zahnarztdazu Plasma aus Ansatz eins eins eins eins eins ?? dazu eine eins dazu zählen gegen sie eins plus eins macht null eins im Sinneins plus eins macht null eins im Senat einfach nur und so weiter null null null null null null null über einzeln sindnach eins davon das kriegen sie rauseine Zahl mit neun BitsMainz Übertrageine Zahl mit neun Bits ganz vorn steht nach einsich kann aber nur acht Bit darstellenin acht Bitsbesser als die eins davon sehe ich nichtund auf diese Weiseein ziemlich frecher Trick wird wenn ich ?? wenn ich da jetzt addiere wenn ich zu dieser Zeit mit lauter Einsen eine einst dazu addiere wird aus dieser Zahllauter Nullen aus so rechnet C tatsächlich und die meisten Nachfolgesprachenrechnen auch so ignorierendas hierÜbertragweinein Bild was ich nicht habe alles was hier links oder läuftes ist zwar extrem viel Wert Wasser links rüber läuft wird aber ganz dreist ignoriertdurch das Rechenwerk gebautwenn Sie also zu dieser Zahl hier eins dazu zählen kriegen sie null rausalso soll ich sagen dass diese Zahl die obendie minus eins gewesen ist ?? nicht zu der minus eins die Einsetzung zähleich nur raus das ist der Grund dahinterdieser Trickalso Zweierkomplementfunktioniert nur deshalb war man die führende Stadt nicht die führende Stelle war die den Überlaufignoriertan anderer Stelle beißt einen das natürlich total wenn sie sagen oder siehe oben ist ja eins plus zwei plus vier plus acht sechzehn zwei hundertund zwanzig das oben ist die Zahl zwo hundert fünfundfünfzigund ich nehme eins zu der Zahl zwo hundert fünfundfünfzigübrige null Rausobstist das nicht richtig entwickeltdamit muss man erleben und man muss vorsichtig sein an der Stelle das wäre der überlaufendlicheoben nicht als minus eins lesen sondern hundert fünfundfünfzigbis fünfundfünfzigplus eins gleich Nulldas sieht komisch ausso das werde wesentlich niedriger bei dem Zweierkomplementund nun geht es so weiter man kann sich Fragen zu welcher Zahl muss ich zwei addieren richtige null rauszu welcher Zahl müssen sie zwei addieren damit nur rauskommtalles Einseneines einzelnen der letzte ist nur nullKomma nachrechnen eins eins eins eins eins eins eins null und ich möchte zwei hundert Luxich möchte zwei dazu zählenin null Plus null macht null eins plus einsmach zwei also null und eins im Sinneinflusseins null und eins im Sinn und so weiterdie ganzen Nullen wieder und vorne eine einzige übertragen ?? dasselbe Phänomen das muss die minus zwei sein sie nicht Zähler einfach rückwärtsdas hier ist jaeigentlich zwo hundert fünfundfünfzigdas jetzt zwo hundert vierundfünfzigdann ist die minus dreihundertdreiundfünfzigimmer ein wenig Zähler einfach weiter rückwärts minus vier muss noch ein weniger seinnullund die minus fünfPunkt so kommt keiner auf die minus fünf habe ich fürs verformen optimiert und kommen könnte die minus fünf ist also eins eins eins einseinsnulleins eins noch einer weniger das wäre die minus fünfdie können es auch anders lesen kann sagen das hier ist die zwo hundert fünfundfünfzigzwo hundert vierundfünfzigdreiundfünfzigzwo hundert zweiundfünfzig zwo hundert einundfünfzigjede Zahl hat dannzwei Bedeutungen je nachdem ob ich sie alsVorzeichenlos betrachtenull bis hundert und fünfzigoder ob sich ob ich die alsVorzeichen behaftetseinim Sinne des Zweierkomplementbetrachtendas wir dann also die minus fünfals Ersatz eins eins null eins einsmit ?? Grade rechneneinseins eins eins eins nulleinseinsdas ?? gerade selberokaydas scheint ja zu funktionieren ?? eins und null gibt einseins und null eins null und eins gibt eins eins und eins mach zwei also null und eins im Sinn eins plus eins ist null und eins im Sinn und Unsinnsind null und einseins und die führende eins hier das neunte wirdsich darausBeistrich es vermag wassie sehen auch Glück gehabt eins plus zwei plus vier ist in der Tat siebenals es einganz übler Rechentrickich setzePunktich setze meine Zahlenins Negative fort indem ich einfach Weiterzelle von der nulleinfach ins Negative weiter zählennunes geht einfacher als das man es jetzt so macht es gibt einensimplen Trick um das herauszufindenwas sie tun können ist folgendessie nehmen die Bits von der fünfdas Rezeptdie nehmen die Bits von der fünf kippen alle um und addieren einst dazuKomma dass ansie nehmen die fünfdas ist null null null nullnull eins null einseinsplus vierdie fünf?? nehmen alle diese Bitsbildendas bitweiseKomplimentalle umkippenmit PreiseswelcheOperator ist das in CSternsymbol Schrank für das bitweise KomplimentPunktdas ist die Tilde inNCbitweise mit ?? eine logische Aussage zu verneinen war das Ausrufezeichenvon Lahraus Pool und Bedingungsvariablenfort und schon gegeneinander vertauscht ?? das Ausrufezeichenmit der Tilde voreinem Ausdruck sagen sie jedes Bit umkippen das ist das bitweise kommt mit in C anderswo anderswenn sie so also hier mit umkippen eins eins eins einseins null eins nulleins dazu zählen plus einsin was dann passiert hin wird einfach das letzte auf eins gesetzt eins eins eins eins eins null eins einsund das ist danndie minus fünf im ZweierkomplementNummer überzeugender sich nicht als Gewürz erzeugt habe die dritteStelle von hinten ist nullhatten eben auch die dritte Stelle von den ?? das ist das Rezept dafürgeht er nicht zu Fuß wirklich durch vom Ende zwo hundert und fünfzig hundert vierundfünfzigPunktes gibt dieses billige Rezept alle Bits umkippen und eins dazu zählenalles gibt's dieseMehrdeutigkeitwenn der Einsatz als eins eins eins eins stehtkann das zwo hundert und fünfzig bedeutenes kann auch minus eins bedeuten?? dasRechenwerkinteressiert überhaupt nicht das Rechenwerk rechnet immer dasselbedie Frage ist ob der Mensch jetzt darunter zwo hundert und fünfzig versteht oder minus eins verstehtund ?? ähnliche Vergleichsfunktionder später auch im Rechnerdiepositive Zahl würde die negative Zahl drunter versteht ?? an das klärt sichdurch die Deklarationenihrer VariablenDefinitionihrer Variablenwenn Sie schreibeninsdann heißt das ich hätte gernedie Variante mit Vorzeichenwenn Sie Schreibenan Saint ins Uppsala an sein Kind heißt das sicherlich eine Variante ohne Vorzeichenan der Stelle klärt sich dasähm hier in diedie Variante mit Vorzeichenautomatischwenn sie die ohne Vorzeichen haben wollen müssen Sie unbedingt an das Anzeigen der Forscher sickern auch sein davor schreibenüberflüssigwas es genau das was es sowiesoist ab Werkvielleicht für Richter Komma Beispiel an der Stelle vorKomma sodass ein ich baue mal einenseinPunktSaintja das in der Wiki dann acht Bit ein Bytezumindest in C und C plus plus ist dastypischerweiseacht wirdanden Beinhaarunterschreibe ich jetztanWassermann hundert zwanzig reinund dann sage ich bitte mal hundert zwanzig dazu addierenund dasselbe gucken wir uns fürAnzeigenanmich A sondern BPunktdannwird der Debugger uns das automatisch richtig übersetzenhoffe ich dochdass es auf dieser eine Weise interpretiertSaint als Zweierkomplementmit Vorzeichenund an seinnormal wie man binäre Zahlen erst mal so lerntist es in die brauche ich nicht auch hier mallocker?? und Anni hexadezimaldas Designdes immer soalso in A steckt hundert zwanzig drinneneine vorzeichenbehafteteZahlZeitacht wirdjetzt agiere ich noch mal hundert zwanzigdas müssten dann ja zwei hundert vierzig werden aber zwei hundert vierzig ist eben anders belegtund sie sind der steht minus sechzehn und nichtzwei hundert vierzigdas istÜberlauf beiVariable mit VorzeichenPunkt sie kommen hierbei den acht Bits nicht über die hundert sieben zwanzig bei hundert sieben zwanzig ansi null und sieben Bits gesetztdass es die letzte positive Zahl dicker nichtüber hundert sieben zwanzig Komma zwo hundert vierzig geht nicht er macht eine negative Zahl rausanders wenn ich Anzeigen sage?? wird es so aufgefasstwie man es normalerweise auffassen als Zahl ab null aufwärts auf keinen Fall Negativerzieherbei B??Komma wieder auf dezimal umschaltenals er startet mit hundert zwanzig und wenn sie etwa hundert zwanzig dazu addierenwenn es tatsächlich zwei hundert vierzigwar das System weißdas ist dasselbe BitmusterIzmir sechzehn diese zwar nicht für die dasselbe Bitmustereinmal so lesen soll mit Zweierkomplementweiß sein und einmal so lesen sollwie man es naiv macht?? an SaintNummerzeichen ist es dem Bitmuster sich eine ganz dreist umschalten auf binärnach?? Platz haben Punktund hier??er?? das ist dasselbe Bitmusterder Rechner berechnet dasselbewas kostet das Überwindung sich das vorzustellen der Rechner macht dasselbein beiden Fällen recht dasselbe mit den Bits immer nur anders verstanden einmalals Zahl mit Vorzeichen der Massenzahl ohne Vorzeichen das klärt dieseWiderspruchesin C ist das sodas sie bei diesen acht bezahlendazuschreibenmüssenob siemit Vorzeichenoder ohne Vorzeichen haben wollen Beistrich dann nicht festgelegt ist der Compiler kann tun was er will Punkt Hauptsache einigt sich irgendwieder Standard schreibt mich vor diese acht Bit mit oder ohne Vorzeichen zu lesen sind deshalb sollte man unbedingt immer seins Kerker oder Anzeigenblätterschreibendass man da nichtÜberraschungen erlebtje nach Compilerbei den größeren Formaten ist das klarwenn sie ihn schreibenwenn sie ins Schreiben ins Ziel gleich soundsoviel eines klar das istmit VorzeichenamSaint bis sie an der Stelle nicht dazuschreibendas Zeit ist an der Stelle eingebautwenn sie dagegen ein Kind ohne Vorzeichen haben wollen sie ausdrücklich an Zeitdavor schreibendas führt dann dazu dass der Bereich größer wird man hat eben noch dies eine Bit gewonnenbei dem sein Kerker hier Komma vorder positive Bereich größer ist als bei dem seindirekter und an SeinsseinsScharund an sein Scharlustigerweise das direkte Erden in der Abgüsse kein Schar und keinKan SaintCharcoaldieHolzkohleähmder Anzeigenleitergeht von nullbis zwo hundert fünfundfünfzigtanzschulmäßigbinäre Zahlen null null null null null null null und alles einzelne sechs hundert fünfundfünfzigund mit Vorzeichenist das größte was ich habe hundert sieben zwanzigeinen null und sieben gesetzteBitshundert sieben zwanzigund nach unten in das kleinste ist nach eins und sieben nullund das ist die minushundert achtundzwanzigdannje nachdem was man brauchtimmer wieder sein oder anzeigenwenn sie zahlen über hundert sieben zwanzig brauchenund zwo hundert und fünfzig genug ist nimm sie als sein Charakter wenn sie negative Zahlen auch an dem sich sein Kerkerdie Zahlenfür das Vorzeichendamit das nur noch die Hälfte an positiven Zahlen da ist es in den früher ihrübliches Phänomen lange Zeit gewesen bei Windows Dateigrößendie Länge von zum BeispielVideodateienund Wavedateienwar Mitseinszwei ?? dreißig Bit angegebendie Länge einer Dateimit einer vorzeichenbehaftetenZahl ziemlich unsinnig aber es hat jemand an der Stelle wohl nicht genau nachgedachtdas heißt das ändert seinen ihm nur noch zwei Gigabyte groß werden konnte Beistrich vier Gigabytebei dir um die Hälfte fehltebeim Zeit von zwounddreißigBitsolche unsäglichenEffekte hat das dannsollte noch sagen in scharfer gibt es nur ?? seien sind aber können sie nicht an sein davor schreiben also bei den neueren Sprachenhabenja warten auch in ?? und long und Georgeaber alle nur in derVorzeichenversionnicht ohne Vorzeichen das macht das ganze etwasübersichtlicherbei den Regelnimmer jetzt nämlich eine Zahl ohne Vorzeichenaddiert zu einer Zahl mit Vorzeichenähnliche Geschichten wird es haarsträubendwie das jetzt mit den Regeln funktionieren soll was wird dann aus Sommerzeitmit Vorzeichenplus ohne Vorzeichenwelche Bits werden wofür benutzte selbst es sind aber ganz streng rausgeflogenJava hat nurals moderne Sprache dann nur mit Vorzeichenwarenin sich sharpMicrosofts Variante dannMicrosofts Analoge ?? gibt's dann auch wieder dieVersion ohne Vorzeichenamgucken und abschließend vielleicht noch ein paarProblemfälleanwenn ichmir sowas habe sieinD ist gleich?? zu vielund in T ist gleichzehnmaldieab welcher Zahl hier für das dieab welcher Zahl für das David es hier unten bei dem E beim ausrechnen Ärger gebenin ?? ist auf dieser Maschine sechzehn Bit ichwar nichtan seiner Vorstädte mit Vorzeichen sechzehn Bit ich mit Vorzeichen ?? auf den großen Maschinen heute im echten PCzwei dreißig bitte ich typischerweisediese Maschine sechzehn Bit ??wie schlimmdarf ich hierwählenund das Ergebnis ist immer noch richtigwasmaximalmöglich schreibe ich immer hinterso das das Ergebnis hierbei äh immer noch richtig istKommawas die größte Zahl ist dir noch verankernverarbeiten kann ?? verantworten ?? verarbeiten kannähmfünfzehn mal die eins und vorne die null das ist das größte was in sechzehn Bit ihres größten acht wirdsiebenmal die eins und vorne die null das ist die größte positive ZahlinAchtbitZweierkomplementsechzehnte Zweierkomplementsechzehntenszwei Jahrzwei sein Zweierkomplementdie größte positive Zahl als die größte Zahl soll ich sagen größte Zahlwird sein nullund dannwie ein zwei drei vier fünf sechs sieben acht neun zehn elf zwölf dreizehn vierzehn fünfzehndass wir die größte positive Zahl seindannkönnte man jetztausrechneneins plus zwei plus vier plus acht plus sechzehn ein bisschen langweiligamwie kriegen Sie diese Zahlleichterausgerechnetwenn sie eins addieren siebzehnten null eins im Sinn null eins im Sinn und so weiter null null null und ein übertragen die Stellein sie hier eins zu addieren haben sie einsund fünfzehn null eins zwei drei viersechs sieben acht neun zehn elf zwölf hundert sechsundfünfzigso weit sein binärminus einsundeins?? hierzwar auch null zwei eins und so weiter das ist vorne zwei hoch fünfzehnalso zwei ?? fünfzehn minus einsund zwei ?? fünfzehn sind irgendwas bei zwei dreißig tausendweiß man irgendwann auswendigzweiX und Y hochfünfzehnzwei dreißig tausend sieben hundert achtundsechzigminus eins alle zwei ?? dreißig tausend sieben hundert siebenundsechzigwird die Zahl seinzweiunddreißigtausendsieben hundertsiebenundsechzigfür die größte Zahl sein sechzehn Bit Zweierkomplementwarenzu sehendas darf nicht das darf maximal rauskommt zehnmaldie?? darf maximalzwei ?? dreißig tausend sieben sechs sieben seindas heißtDzurück will ich hierD darf also maximalzweiunddreißigäh drei tausend zwei hundertsechsundsiebzigseindas Komma ?? Kommaausprobierenalsodrei tausendzwei hundertsechsundsiebzigsollte noch gehenjetzt mal weg Punkt die auf das ersteProzess ansowie esokay sie sind das ?? noch hinich gehe mit drei tausend dreißig wird sich rein kriegen zwei ?? austauschen Beistrich sich aus als das Zehnfacheokay das hat funktioniertohne Probleme den nächsten zweiunddreißig?? sie etwa dreißig ?? siebenund das müsste dann ja fehlschlagenokaysie sehen was sie rauskommt?? eine negative Zahldrei tausend zwo hundert sieben siebzig mal zehnsagte sie Maschinist minus zwei dreißig tausend Zimmer sechsten sechzighatte das immer im Kopf behalten bei den ganzen Zahlen knallhartihre Überlauf toleriertansie können positive Zahlen addieren positive Zahlen miteinander multiplizieren ?? negative raus umgekehrtklappt das auchdas aus negativen Zahlenplötzlich positive werden überraschenderweisealles nur dieses Rechenwerk einfach zu halten und alles nur weil das Zweierkomplementaußer sich funktionieren würdedasnicht gerade noch was sagenzu dieserKaste arbeite ich hier imSeminar gemacht habeihr ganzes unter Umrechnungenlernen die Umrechnungenes gibt ein paar Trickswie man den Compiler an der Stelleüberreden kann doch das zu tun was man haben möchte hier zum Beispielfünf hundert mal vier hundert vierzig ist zu groß für die sechzehn Bitauch das ist wieder über zwei dreißig tausend noch waswas ich mache ist hier ich sage die fünf hundert nehme bitte als lange Zahlenälter hinterdas heißt für ihn jetzt hier in zweiunddreißigBitmöge die fünf hundert in zwei ?? dreißig Bit nehmen und dann ist sie so und die Nachfolgesprachenauch das sie dann mit zwei dreißig Bit weiter rechnen auch wenn er vier hundert vierzig hier jetzt als sechzehn Bit genommen wirdRechte insgesamt zweiunddreißigBit weiter bei der erst ein Land mit zwei dreißig Bit warund dir sagt zum Schluss wieder okay aus dem Ergebnis macht wieder nirgendvermittelt ?? findeter in C müsste man das nicht schreibeneiner Sprache muss man das Inter vorschreibtBeistrich das passiert hier ?? ich erzwinge dass er das wirklich der mit zwei dreißig beträchtlich ?? einerlang istdas Ergebnis mach ich wieder zusechzehn Bits die uns die dasetwas anders aus ist aber derselbe Effekt dieses längstein Inter zur Variablemöge eranders verstehen nämlich in zwei dreißig Bit als langund das erzwingt auch für das ganze rechnen wir mit zwei ?? dreißig mitgemacht wirdbei Zahlen könnte direkt dieses el dahinter schreiben zu sagen ?? Ballon können auch locker vorschreibenaberwarum soll ich das aufwendiger vorschreibenwenn ich das einfach als Il dahinter schreiben kannderselbe Effekt sie können steuernund müssen oft auch Steuernwie diese Witz die Rechnungen gemacht werdenkann sein das mitten in eine Rechnung des jetzt möchte der Fall des mitten in einer rechtlosen über Lauf ist fünf hundert mal vier hundert erzeugten Überlaufich kann danach durch die Frequenzen der wieder sechzehn Bit aber das Ergebnis was hieraus gekommenPunktanerzähle ich an dieser prominenten Stelle damit sie dasfrüh hören und nicht vergessen weil es einenauf sehrfiese Weisebeißen kann sie haben eine Rechnung hier stehen vor der Stele ganzordentlich aussieht und kriegen Blödsinn rauswenn das der Fall ist einzigartig in den irgendwo ein Überlauf