DEZ -> BIN (QA)
-
hi,
@swordfish. ich hatte einen Denkfehler gemacht und das (falsche) Ergebnis dann auf die unsigned shift-operationen geschoben. Ich hatte angenommen, dass die größte 32 bit unsigned 2^32 sei, falsch, die ist ja in 32 bit nicht mehr darstellbar. Es ist 2^32-1 und das ist eine ungerade zahl mit lauter einsen, also für eine maske, die das MSB maskieren soll, nicht geeignet. richtig lautet die Maske, so wie ich es im code-schnipsel berechnet habe:m = 1+(numeric_limits<unsigned int>::max() >> 1)
oder wenn man konstant 32 bit länge zugrunde legt:
m = 1 << 31
Nachhilfeschülerin: das ist aber lustig, ich gebe ja auch mathe nachhilfe und vor ein paar wochen habe ich auch dasselbe Problem, einigen Schülern zu erklären wie man zwischen verschiedenen Basissystemen umrechnet und in ihnen rechnet. Hier in Bayern verlangt man, dass die Schüler im Fünfersystem rechnen können, also war unser Konvertierungsschwerpunkt 10er <--> 5er.
Zu deinem Programm: Meinst du nicht auch, dass es selbst für Schüler vom Gymnasium doch noch etwas zu schwierig ist (auch wenn die Schüler an einer Informatik AG teilnehmen)?
vg tesu
-
tesuji schrieb:
m = 1+(numeric_limits<unsigned int>::max() >> 1)
oder wenn man konstant 32 bit länge zugrunde legt:
m = 1 << 31
Warum so umständlich?
~((~0U)>>1U)
-
hi Tim,
deine maske ist ja viel schöner, danke.
lg tesu