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 + 1

    Nächste Zahl währe also wieder 255 wehen
    255 = 255 + 0

    Ne 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 + 1

    Nächste Zahl währe also wieder 255 wegen
    255 = 255 + 0

    Ne 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.


Anmelden zum Antworten