Binäres Subtrahieren; Wie genau funktioniert das irgendwie komme ich da nicht weiter?


30.07.2022, 00:43

Kannst dud as mal etwas genauer erklären Techpech1984?

Carusla  29.07.2022, 23:41

Woher beziehst du deine Quellen?

lschecker90gf 
Fragesteller
 29.07.2022, 23:41

was meinst du damit?

Carusla  29.07.2022, 23:42

Wo du das lernst

lschecker90gf 
Fragesteller
 29.07.2022, 23:45

aus dem internet. Wieso?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

zwei fehler die du hast , wenn du eine 7 bit zahl hast musst du auch eine 7 bit zahl abziehen und dann noch den übertrag richtig rechnen .

hier einmal wie es richtig geht (ob 8 oder 7 bit spielt keine roille , ich mag halt bytes) .


100
-25
128 64 32 16 8 4 2 1 
  0  1  1  0 0 1 0 0 = 100
  0  0  0  1 1 0 0 1 = 25

  1  1  1  0 0 1 1 0 = invers von 25
                   1 = +1
  1  1  1  0 0 1 1 1 = -25 zweierkomplement

  0  1  1  0 0 1 0 0 = 100
  1  1  1  0 0 1 1 1 = -25 zweierkomplement

  0  1  0  0 1 0 1 1 = ergebnis
    64       8   2 1 = 75

du musst bei 1 1 auch den übertrag nehmen , das folgende ist dann 1 1 1 , wo 1 übrig bleibt .

 011
+111
====
1010

und in unserem beispiel wird das 9 bit weggelassen . da es hier um byte zahlen geht (ohne vorzeichen) .

du kannst das ganze auch nur mit den 7 bits machen , dann nimmt man beim ergebnis auch nur 7 bits .

lschecker90gf 
Fragesteller
 30.07.2022, 00:15

irgendwie habe ich das nicht ganz verstanden wie du nun auf das Erghebnis gekommen bist.

Also

du schreibst erst mal die Reihe auf

128 64 32 16 8 4 2 1 (Welches nun für 2^0 - 2^7) steht und je nachdem wo nun eine 1 drin steht haben wir eine 1 in wertigkeit einer Dezimalzahl.

Bsp.:

0 bei 128, 0 bei 64, 1 bei 32, 1 bei 16, rest alles null würde bedeuten In Summe hätten wir da

48 als Dezimalzahl stehen wenn ich das bis dahin richtig verstanden habe.
Nun du schreibst beide Zahlen als Binär auf

01100100
00011001

wie kommst du von da auf

11100110
00000001
11100111

Das Komplementär von 01100100 wäre doch 10011011 ?!?

0
TechPech1984  30.07.2022, 00:16
@lschecker90gf

kannst du nicht richtig rechnen

64+32+4 = 100

16+8+1 = 25

rest steht da , guck es dir nochmal genau an .

0
lschecker90gf 
Fragesteller
 30.07.2022, 00:17

wie wird die Inverse erstellt?

Oder was ist eine Inverse?

0
TechPech1984  30.07.2022, 00:21
@lschecker90gf

inverse , hallo , ich bitte dich , du hast es doch selber als rechenregel schon gemacht

aus 1 wird 0 aus 0 wird 1

das inverse ist aus schwarz wird weiss , aus weiss wird schwarz .

Invers = umgekehrt

das tätigkeitswort wäre invertieren = umkehren .

0
TechPech1984  30.07.2022, 00:33
@lschecker90gf

ünrigens wenn du eine 7 bit zahl hast musst du auch beim zweierkomplimentär eine 7 bit zahl nehmen , da du beim invertieren sonst 1 bit zu wenig hast . und dann die überträge richtig rechnen .

0
lschecker90gf 
Fragesteller
 30.07.2022, 00:44
@TechPech1984

Also siehe Meine Frage also die Ergänzung.

Wie wird das bei der Eingabe in einem Taschenrechner realisiert?

0

Hi, ja, das liegt daran, dass du eben nicht 100-25 rechnest.

Wo liegt jetzt dein Problem?

Wenn du mit dem Zwei-Komplement rechnest, dann musst du auch vorher definieren, wie viele Stellen du verwendest und die Anzahl Stellen durch alle Operanden durchzuziehen.

Denn, die höchstwertige Stelle legt ja gerade das Vorzeichen fest.

100=1100100 hat 7 Stellen, für deine 25=011001 nutzt du nur 6. Du brauchst aber gerade bei dieser Zahl das höchswertige Bit, um es negativ interpretieren zu können im Zusammenspiel mit der 100.

Statt also 011001 ins Zwei-komplement zu bringen musst du 00011001 konvertieren, außerdem musst du bei der 100 noch eine zusätzliche 0 anfügen (insgesamt 8 bit), sonst musst du wegen der führenden 1 das auch negativ interpretieren.

Verstehst du warum?

Woher ich das weiß:Studium / Ausbildung – Informatik-Studium / Mathematik-Studium / ITK-Ausbildung
TechPech1984  29.07.2022, 23:58

doch doch er rechnet 100 -25 , der anfang ist richtig , aber er hat nicht 8 bits genommen und sich auch noch verrechnet . seihe meine antwort

0
TechPech1984  30.07.2022, 00:06

sorry deine erklärung ist mist , und komplett falsch . er hat alles richtig gemacht, ausser das er da wo 1 1 kommt den übertrag nicht richtig gemacht hat und er muss gar ncihts als negativ interpretieren . halte dich bitte an die rechenregel und verwurstel nicht etwas nur im richtiger zu wirken , wir sind nicht bei negativen zahlen die ein 8 bit als negativ zahl haben , wir sind bei ganz schlichten 8 bit positiv zahlen die halt subtrahiert werden .

also 
255 
-
128

kein vorzeichen bit vorhanden . 
0
SirNik  30.07.2022, 00:24
@TechPech1984

Mal abgesehen davon, dass du mit dem Fragesteller nicht respektvoll kommunizierst: hast du überhaupt verstanden was bei mir steht und stand und was in deiner Antwort steht?

1

Das 2s ist zwar praktisch, weil es dem Rechenwerk entgegen kommt, Du darfst (und kannst) aber natürlich ganz normal subtrahieren, wie Du es auch bei Deziamldarstellung machst.

 0110 0100
-0001 1001
-----------
         1   (0-1, 1 gemerkt) 
        1    (0-1, dito)
       0     (1-1 hier wird das geborgte Bit verrechnet)  
 0100 1

Die Darstellugn in 2s Komplement ermöglicht es halt alle Subtraktionen direkt mit dem Addierer zu verarbeiten, sodaß ich kein eigenes Rechennetz fürs Subtrahieren benötige.

Und 2s?

 0110 0100 (100)
 0001 1001 (25)
 1110 0110 (1s)
+1110 0111 (2s)
-----------------
 0100 1011 (75)

Mit wie vielen Bits rechnest du denn?

Du hast einmal eine 7-Bit-Zahl, deren deren höchstes Bit gesetzt, die du aber als positive Zahl interpretierst.

Dann hast du eine 5-Bit-Zahl, aus der du mit der führenden 0 eine 6-Bit-Zahl machst und bildest deren Zweierkomplement.

Dass da Unsinn rauskommt, ist klar.

Schritt 1 Wähle viele bits du zu verfügung hast sagen wir mal 8

100 = 001100100

25 = 000011001

das 2er Komplement von 25 ist : 111100111

also das 2er Komplement addiert mit der 100 liefert:

1001001011 ABER das 9-bit entfällt weil du ja nur 8 zu verfügung hast also

001001011 und das ist wenn ich mich nicht täusche 75 ?