Binär Rechnen



  • Hallo da draussen!

    Kann mir jemand vielleicht einen Tip geben, wo ich Unterlagen zu binärem Rechnen und bitweisem Verodern und Verunden krieg?

    Würde mich sehr freuen wenn jemand helfen kann!

    Danke
    Samy 😋



  • Gerechnet wird immer Binär. Anders geht's gar nicht.

    kennst du dich mit bitweisen Verknüpfen aus und willst wissen, wi man es in C++ umsetzt: & (Und), | (oder), ^ (xor) und ~ (not)

    Oder willst du den Umgang mit bitweisen Verknüpfungen lernen? Ich hab in letzter Zeit so viele Anfänger-Tutorien geschreiben. Irgendwie hab ich jetzt keine lust mehr, entschuldige.



  • Ich brauch die Theorie! Ich muss eine Präsentation über rechnen mit binären Zahlen, Umwandlung von Dezimalzahlen in Binärwerte und umgekehrt und eben bitweisen Verknüpfungen.

    Solltest Du einen Link wissen od. ähnliches bitte sag mir Bescheid.

    Andererseits kann ich verstehen, dass Anfängerfragen mühsam sind. Lernen von C++ is eben mühsam. Es zwingt dich ja aber keiner Antworten zu schreiben oder 😉



  • int x = 5;
    int y = 6;
    int z = x + y; // Hier rechnet der Rechner binär. Anders kann er's nicht
    

    du meinst sowas:

    .
     1011
    +1101
    -----
    11000
    

    Ich hoffe ich hab mich nicht verrechnet. Und das zweierkomplement und so weiter? Das zweierkomplement kannst du als ~x+1 in C++ formulieren.

    Umwandeln in binäre Zahlen (also in einn Text, da die representation innerhalb des Rechners eh Binär ist) würde ich spontan mit ner menge Und-Verknüpfungen in einer Schleife lösen. Die stellen erhälst du in dem du den Logarythmus zur Basis zwei aus der zahl ziehst.

    Aber dir grundlagen des Verknüfen kennst du oder ist das komplett Neuland?



  • Hmm.. .mal sehen, was mir so auf Anhieb einfällt :

    bitweises Und :
    Ist nichts weiter, als zu überprüfen, ob beide Bits gesetzt sind, nur dann ist das Ergebnis 1

    Man macht das in sogenannten Wahrheitstabellen :

    &  0 1
    
    0  0 0
    1  0 1
    

    verknüpfst Du zwei bitfolgen bitweise miteinander, so bleiben beim Ergebnis also nur die Bits übrig, die bei beiden Bitfolgen gesetzt sind:

    1101 & 
    0111 =
    0101
    

    Dann gib es noch das Oder:

    Hier muss wenigstens eins von zwei zu verknüpfenden Bits gesetzt sein

    |  0 1
    
    0  0 1
    1  1 1
    

    Das exklusive Oder bildet eine Sonderfunktion. Hier darf nur ein Bit gesetzt sein

    0 1
    
    0  0 1
    1  1 0
    

    Ist aber keine logische Grundform, da man es aus anderen Formen ableiten kann

    Als letztes noch das Nicht:

    Hiermit negierst du eine Bitfolge, d.h. Das, was 1 ist, wird 0 und umgekehrt

    Rechnen mit binären Zahlen

    Addieren :

    Nimm zwei binäre zahlen und addiere sie.
    Wenn Du normale Dezimale Zahlen hast, gibt es einen Dezimalstellenüberlauf. Das bedeutet, dass aus einer einstelligen Zahl eine zweistellige wird :

    5 + 6 = 11

    binär klappt das auch

    1b + 1b = 10b

    Das heißt also, dass zwei Einser 10 ergeben.

    hier mal ein 4 bit - beispiel :

    1101  +  1001 = 10110
    13    +  9    = 22
    

    Sutrahieren:

    Hier wird's witzig. Mal ein Beispiel aus dem bekannten Zahlenraum :

    9 -   5  = 4
    9 + (-5) = 4
    

    Man kann also eine Zahl auch mit dem negativen Wert der Zahl addieren, die man abziehen möchte.

    Geht man davon aus, dass die 9 die größtmögliche Ziffer ist (10 ist ja schon eine Dezimalstelle weiter), so ist das Komplement jeder zahl X gleich

    (9 - x) + 1

    Binär geht das auch :

    9 - 5
    01001  - 00101
    
    1er Komplement bilden - Zahl 5 negieren
    
    11010
    
    1 hinzuaddieren (2er - Komplement)
    
    11011
    
    Addieren
    
      01001
    + 11011
    1]00100
    
      00100b = 5d
    

    Die 1, die als Übertrag gesetzt wurde ist unser carry-flag. Dieses sagt uns im Falle der Suntraktion, ob ein Ergebnis positiv [1] oder negativ [0] ist.



  • solltest vielleicht sagen das man die zahl um das 1er kompliment zu bilden invertieren muss

    und um das 2er kompliment zu bilden dem 1er kompliment die 1 hinzuaddieren musst ..



  • UPS!
    ^^
    ich änder's gleich mal im posting *gg*



  • Du kannst mit Binärzahlen genauso rechnen wie mit Dezimalzahlen.
    Der "Sprung", also der Übertrag zB beim Addieren, findet nicht bei (dezimal) 10
    (binär: 1010) statt, sondern bei (binär) 10 (dezimal: 2). Zusätzlich kommt
    noch die ganze Logik dazu (also not, and, or, xor, nand, nor ...). Dazu kann
    man noch erwähnen, dass man alle zweistelligen Logikoperationen aus einer
    einstelligen (not) und einer beliebigen zweistelligen zusammensetzten kann:

    z.B.

    or aus not und and:

    a or b = not (not a and not b)



  • ups, das war doppelt.

    ps: Noch ein Nachtrag:

    Als ein grundlegender Satz für Logik ist der von DeMorgan zu nenen:

    not (a and b) = (not a) or (not b)
    not (a or b) = (not a) and (not b)

    Du kannst ja auch mal überlegen, ob/wie man das Assoziativ-, das Kommutativ-
    und das Distributativgesetz in der Logik anwenden kann 🙂



  • Jo super, da sind ja doch Leute die mir helfen können!

    Finde ganz toll was ihr gepostet habt. Das ist genau das was ich brauche, jetzt kann ich das meinen Kollegen auch erklären.

    Vielen Dank nochmal!
    😃 😃 😃 😃 😃



  • entweder ich versteh was nicht oder hier ist ein Fehler:

    (aus Docs Posting)
    00100b = 5d

    also bei mit ist 00100b eigentlich 4d 😕



  • Vielleicht will jemand mehr über Arithmetik mit Binärzahlen wissen: Link 🙄



  • tuta schrieb:

    also bei mit ist 00100b eigentlich 4d 😕

    bei mir auch.
    5d wär 00101b.



  • Da fällt mir immer :

    http://www.informatik.uni-ulm.de/ni/Lehre/SS03/TechInf1/2003s-TI1-E.pdf

    ein. Das beschreibt vieles Kurz und gut.

    Grüsse


Anmelden zum Antworten