Wenn a gleich ..., dann b gleich ... (Berechnung mit Potenzen)
-
Ich habe ein eigentlich nicht so schweres Problem, doch ich komm nicht auf die Antwort. Die Ausgangssituation lautet so:
Wenn a= dann b= 0 0 1 128 2 192 3 224 4 240 5 248 6 252 7 254 8 255 ...
Die Aufgabe: Man hat die Zahl a gegeben und soll b berechnen. Wie lautet hierfür die allgemeine Gleichung? Kann mir da jemand helfen?
-
Was mir auffällt ist:
128 = 128
192 = 128 + 64
224 = 192 + 32
240 = 224 + 16
248 = 240 + 8
252 = 248 + 4
254 = 252 + 2
255 = 254 + 1Nächste Zahl währe also wieder 255 wehen
255 = 255 + 0Ne Gleichung hmmm
a =128 + Summe 1 bis b von 64 - (2^ (7-b))Oder so ungefehr, aber dann past nicht, das a= 0 => b=0
-
Korrektur
Was mir auffällt ist:
128 = 128
192 = 128 + 64
224 = 192 + 32
240 = 224 + 16
248 = 240 + 8
252 = 248 + 4
254 = 252 + 2
255 = 254 + 1Nächste Zahl währe also wieder 255 wegen
255 = 255 + 0Ne Gleichung hmmm
b =128 + Summe 1 bis a von 64 - (2^ (7-a))Oder so ungefehr, aber dann past nicht, das a= 0 => b=0
-
Das Auffällige sollte eigentlich folgendes sein (hab ich vergessen, hinzuschreiben):
Wenn a= dann b= b binär= 0 0 00000000 1 128 10000000 2 192 11000000 3 224 11100000 4 240 11110000 5 248 11111000 6 252 11111100 7 254 11111110 8 255 11111111 ...
-
Ist äquivalent zu den Gleichungen, die Mr X angegeben hat.
-
Wie ist denn der Ausdruck
Summe 1 bis a von 64
mathematisch zu verstehen? Außerdem sagt er selbst, dass das mit der 0 nicht funktionieren würde.
-
Frager schrieb:
Wenn a= dann b= 0 0 1 128 2 192 3 224 4 240 5 248 6 252 7 254 8 255 ...
b = 256 - 2^(8-a)
Erinnert mich an irgendwelche Timerregister von Mikrocontrollern. Kann aber auch Zufall sein
-
Vielen Dank! Das war mir eine große Hilfe.
Erinnert mich an irgendwelche Timerregister von Mikrocontrollern. Kann aber auch Zufall sein
Nein, es geht darum, dass ich zwei achtstellige Binärzahlen habe, die ich per AND-Verknüpfung vergleichen will. Allerdings sollen nur die ersten a Stellen verglichen werden, weshalb die restlichen auf 0 gesetzt werden müssen, damit sie das Ergebnis nicht beeinflussen. Und deshalb muss ich jede der beiden Zahlen erst mit b AND-Verknüpfen, bevor ich dann beide nochmal miteinander verknüpfe.
Beispiel: Ich habe die Zahlen 10011010 und 00110100, von denen ich die ersten fünf Stellen per AND verknüpfen will. Dazu müssen die letzten drei Stellen aber erst auf 0 gebracht werden:
10011010 00110100 &11111000 &11111000 =10011000 =00110000
damit sie das Endergebnis nicht beeinflussen:
10011000 &00110000 =00010000
-
Shfite doch einfach die beiden Zahlen jeweils um b Stellen, mach deinen Vergleich, und shifte dann wieder zurück.
-
Frager schrieb:
Allerdings sollen nur die ersten a Stellen verglichen werden, weshalb die restlichen auf 0 gesetzt werden müssen, damit sie das Ergebnis nicht beeinflussen. Und deshalb muss ich jede der beiden Zahlen erst mit b AND-Verknüpfen, bevor ich dann beide nochmal miteinander verknüpfe.
die beeinflussen aber nur das ergebnis an diesen stellen, und nicht die stellen, die dich interessieren. es spielt also keine rolle, ob du erst bei beiden operanden uninteressante stallen maskierst, oder die operanden erst verknüpfst, und dann die unerwünschten stellen löscht.
-
An Taurin:
Vielen Dank. Diese Möglichkeit ist sogar noch besser.An camper:
Klar, so wäre das natürlich etwas schneller gegangen. Aber ich nehme jetzt ohnehin die Shift-Funktion.