A) Was ist 23 im Binärsystem? Die Zahl ist positiv also rechnen wir das einfach aus: 1 0111. Wir wollen 8 Bit haben, also 0001 0111. Die nächste Zahl ist negativ, wir verwenden das Zweierkomplement: 57 ist 11 1001, 8 Bit -> 0011 1001 Jetzt Bits kippen: 1100 0110 und 1 addieren: 1100 0111.
B) 23 - 57 = -34. In Binär ist 34 einfach 10 0010. 8Bits 0010 0010. Kippen: 1101 1101, 1 Addieren: 1101 1110.
Jetzt rufen wir add(0001 0111, 1100 0111) auf. Num() verwandelt eine Binärzahl in die positive ganze Zahl
Num(0001 0111) = 23, Num(1100 0111) = 2^7 + 2^6 + 2^2 + 2^1 + 2^0 = 199 (= 256 - 57)
Die Zahlen addieren wir jetzt 23+199=222, modulo 2^8=256 ist das immer noch =222, bin() wandelt das jetzt wieder in eine Binärzahl um: 222 ist in Binär 1101 1110. Also genau dasselbe wie wir für -34 rausbekommen haben, die Addierfunktion arbeitet also korrekt.
C) Gesucht ist eine Binärzahl die Hexadezimal B3C8 entspricht, die ist aber schnell gefunden: B = 11 = 1011, 3 = 3 = 0011, C = 12 = 1100, 8 = 8 = 1000. Zusammenhängen: 10110011 11001000