Faktorenzerlegung

Hallo miteinander,

ich habe mehrere binäre Werte, die ich als Zweierpotenz in einer Dezimalzahl untergebracht habe:

00010011 -\>
0\*(2^7) + 0\*(2^6) + 0\*(2^5) + 1\*(2^4) + 0\*(2^3) + 0\*(2^2) + 1\*(2^1) + 1\*(2^0) = 19

Wie finde ich jetzt elegant heraus, ob eine Stelle in diesem Ergebnis enthalten ist? Anders gesagt: Welche Formel enthält eine Funktion, die folgendes Ergebnis liefert:

f(19, 128) = 0




f(19, 64) = 0




f(19, 32) = 0




f(19, 16) = 1




f(19, 8) = 0




f(19, 4) = 0




f(19, 2) = 1




f(19, 1) = 1

Ich hoffe, ich konnte die Frage verständlich erklären und bedanke mich für Eure Hilfe :smile:
JayKay

Binäres Und
Wenn es sich beim Operanden wie hier um Zweierpotenzen handelt, ist das sehr einfach:
Beim „Binären Und“ wird bitweise das boolsche Und angewandt. Damit lassen sich elegant einzelne Bits abfragen.

Bei der Umsetzung in vielen Programmiersprachen ist es dann nicht mal notwendig, positive Ergebnisse auf 1 zu normalisieren, weil alle von 0 verschiedenen Werte als WAHR interpretiert werden. Sonst teilt man halt noch mal durch den Operanden.
Das Vorgehen nennt sich Maskieren, man kann damit einzelne Bits abfragen, setzen oder löschen.

Das Ganze ist elementare Methodik seit den Anfängen der Computerei. Entsprechende Operationen sind in allen gängigen CPUs und Programmiersprachen realisiert.

Ciao, Allesquatsch

Gute Idee. Vielen Dank + Sternchen [owT]
Tja, das hier ist ein Pflichtfeld, also …