Binär. Stellenwert finden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Binär. Stellenwert finden

    hallo,

    also zu meinem Problem. Ich verwende folgendes System (bzw. will verwenden *g*) um Rechte zu Verwalten.
    Wenn man ein bestimmtes Recht hat bekommt man an dieser Stelle eine 1 ansonsten eine 0. Somit hab ich dann eine binäre Zahl. Diese speichere ich dezimal in eine DB ab.

    Jetzt will ich eine Funktion schreiben die diese Dezimal Zahl bekommt und einen Stellenwert (z.B. 16) jetzt soll dieser rausfinden ob binär der Wert (im Beispiel 16) verwendet wird oder nicht.

    Beispiel: 29
    Binär: 11101
    zu suchende Stelle: 8

    hier die Funktion dann false zurück geben.

    Kann mir da jemand weiterhelfen. Bitte keine Lösung in dem ich die Stelle für den log auf basis 2 ausrechne. Das ist glaub ich mit "Kanonen auf Spatzen geschossen".

    Danke schonmal


    gruß
  • wäre es nicht einfacher einen string zu speichern und jedem recht einem bestimmten Buchstaben zuzuordnen? dann ließe sich bei den meisten Programmierspracen leicht überprüfen ob ein bestimmtes Recht vorhanden ist

    Ansonsten bleibt dir wohl nichts anderes übrig als die zahl wieder in binäre Form umzuwandeln und das dann zu prüfen, das wäre wohl afaik das einfachste, aber ich denke mal es wäre hilfreich zu erfahren welche Sprache du verwendest
  • ich verwende php.
    Hab es jetzt erstmla so gelöst.

    Die Zahl in binär gewandelt.
    Den log von 2 ausgerechnet und hardcodet eingegeben.
    Danach rechnet er mit nur noch die gesuchte Stelle x aus mit:
    logx / gepeichertes log 2 (somit spar ich mal rechen Arbeit)

    Dann mit substr()


    das mit dem String ist eine gute Lösung. Werd mich damit mal beschäftigen. Danke!