Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Zweierkomplement (Datentypen, Variablen und Ausdrücke)

Im Zweierkomplement (= Binärkomplement) werden die positiven Zahlen (inkl. der Null) einfach im Binärsystem dargestellt (0 = 0000 0000, 1 = 0000 0001, 2 = 0000 0010, 3 = 0000 0011, ...). Die negativen Zahlen jedoch werden wie folgt dargestellt: Die Zahl -1 wird durch lauter binäre Einerziffern dargestellt (-1 = 1111 1111), jede um Eins kleinere Zahl wird auch durch eine um Eins kleinere Binärzahl dargestellt (-2 = 1111 1110; -3 = 1111 1101, -4 = 1111 1100, -5 = 1111 1011, ...).

  1. Stellen Sie die folgenden (Zweierkomplement-)Binärzahlen dezimal dar:
    • 1110 1011
    • 1110 1110
    • 1101 1100
  2. Schreiben Sie im Zweierkomplement: -6, -8, -17, -97, +5
  3. Berechnen Sie die folgenden Subtraktionen (bzw. Additionen) im Zweiersystem. Verwenden Sie ausschließlich binäre Darstellungen. Schreiben Sie die negativen Zahlen zunächst im Zweierkomplement, damit Sie zur Lösung ausschließlich binäre Additionen verwenden.

    • 0 - 1
    • -1 - 1
    • 1 - 2
    • 2 - 3
    • 18 - 5
    • 5 - 13
    • -32 - 16
    • -25 + 9

    Beispiel: -13 - 5 = (-13) + (-5) = 1111 0011 + 1111 1011 = 11110 1110 = -18

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

2 Lösung(en)

def zweierkomp(s,wortlaenge):
    if s[0] == '1':
        return int(s,2)-int(1 << wortlaenge)
    else:
        return int(s,2)

def zweierkompbin(s,wortlaenge):
    k = len(s)
    zeichen = s[0]
    betrag =s[1:k]
    if zeichen == '-':
        wert = int(1 << wortlaenge)-int(betrag)
    else:
        wert = int(betrag)
    return bin(wert)


print '8Bit:  1111 1010 ---> '+str(zweierkomp('11111010',8))
print '8Bit:  0001 1111 ---> '+str(zweierkomp('00011111',8))
print '8Bit:  1110 1011 ---> '+str(zweierkomp('11101011',8))
print '8Bit:  1110 1110 ---> '+str(zweierkomp('11101110',8))
print '8Bit:  1101 1100 ---> '+str(zweierkomp('11011100',8))

print '8Bit: -6       ----> '+str(zweierkompbin('-6',8))
print '8Bit: -8       ----> '+str(zweierkompbin('-8',8))
print '8Bit: -17       ----> '+str(zweierkompbin('-17',8))
print '8Bit: +5       ----> '+str(zweierkompbin('+5',8))
                
function convert2sComp(input, bits = 8) {
  if (typeof input == 'string') {
    input = input.padStart(bits, '0');
    if (input[0] == '1') return -(2 ** bits - parseInt(input, 2));
    else return parseInt(input, 2);
  } else {
    if (input >= 0) return input.toString(2).padStart(bits, '0');
    else return (2 ** bits + input).toString(2);
  }
}

// test
for (let i of [
  '101', '11101011', '11101110', '11011100', -6, -8, -17, -97, 5
]) console.log(`${i} -> ${convert2sComp(i)}`);
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

Verifikation/Checksumme:

A) -21, -18, -36

B) 1111 1010, 1111 1000, 111110 1111, 1001 1111, 0000 0101

C) Verifikation trivial.

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 1
Schwierigkeit: k.A.
Webcode: kjb8-rjjm
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen