Anzeige:
Ergebnis 1 bis 11 von 11

Thema: wie schauen, ob in zahl das 2. bit gesetzt ist

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657

    wie schauen, ob in zahl das 2. bit gesetzt ist

    Hallo,

    wie kann ich in einer großen zahl schauen, ob das 2. bit (also der 2er im dualsystem) gesetzt ist?
    Das ganze soll natürlich möglichst performant ablaufen, bisher konvertiere ich die zahl in einen string, der die zahl im dualsystem umgekehrt (also letztes zeichen wird erstes usw.) darstellt und überprüfe dann ob das 2. zeichen auf 1 ist (also mit $string[1] == 1).

    Markus

  2. #2
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von msi
    wie kann ich in einer großen zahl schauen, ob das 2. bit (also der 2er im dualsystem) gesetzt ist?
    äh, zahl%4>1?

    so long

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    oder über einen logischen Operator:
    PHP-Code:
    $erg = ($zahl 0x02) ? "gesetzt" "nicht gesetzt"
    Pingu

  4. #4
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    danke, hätt ich auch selber drauf kommen können
    wieso schreibst du 0x02 und nicht einfach 2?? was ist der unterschied?

    Markus

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    allgemein kann ichs dann so ausrechnen,
    wobei $st die stelle ist (im obrigen fall 2) und $zahl die zahl:

    PHP-Code:
    $zahl%(pow(2,$st))>($st-1))&&(pow(2,$st-1)<=$zahl 
    wie würde soetwas mit logischen operatoren aussehen?

    danke Markus

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Nutze doch einfach den Shift-operator
    PHP-Code:
    $zahl & (1<<$st
    $st beginnt bei 0.

    BTW: 0x bedeutet, dass die Zahl im Hexadezimalsystem angegeben wird. Das hat den Vorteil, dass jede Ziffer für genau 4 bit steht. Um also z.B. bit 4 (bei 0 angefangen zu zählen) zu prüfen, musst du entweder
    $zahl & 16 schreiben, oder $zahl & 0x10, was einfacher ist. Bit 31 wäre z.B. $zahl & 0x80000000 oder $zahl & 2147483648. Ich denke, du siehst den Zweck
    Geändert von Joghurt (22-12-2004 um 00:47 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •