Binär Rechnen
-
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 1Man 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 = 5dalso 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