1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Math. Ausdruck von Methoden

  • planlos123
  • 1. Dezember 2009 um 13:30
  • Unerledigt
  • planlos123
    1
    planlos123
    Mitglied
    Punkte
    10
    Beiträge
    1
    • 1. Dezember 2009 um 13:30
    • #1

    Moin moin!
    Ich habe hier so eine tolle Methode, die eine bestimmte positive Zahl einliest und sie dann durch 2 teilt, bis sie <= 0 ist. Dabei werden die Teilschritte gezählt und abschließend ausgegeben. Für die Leute, die keine Prosatexte mögen, auch so:

    int z = 0;
    while(n > 1)
    {
    n = n / 2;
    z++;
    }
    return z;

    Nun muss ich eine math. Formel finden, mit der ich auch auf das Ergebnis kommen kann. Wenn man bspw. ein paar Werte einsetzt, erhält man eine gewisse Tabelle:

    1: 0
    2: 1
    3: 1
    4: 2
    5: 2
    6: 2
    7: 2
    8: 3
    9: 3
    ...
    15: 3
    16: 4
    ...
    31: 4
    32: 5
    ...
    63: 5
    64: 6
    ...

    Math. gesehen müsste es sich ja um eine Quadratwurzel handeln? Aber bei 15 kommt bspw. ein falscher Wert. Oder stimmt das mit der Wrurzel doch? Und wie kommt man auf so eine Lösung überhaupt?

    Grüße von planlos123

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 1. Dezember 2009 um 15:51
    • #2

    damit ich es nicht ganz verrate sag ichs mal mit python:

    Code
    int(math.log(n,2))

    [edit]als zusaetzlichen hint:

    Zitat von planlos123
    Code
    n = n / 2;

    immer dieser obfuscated code :winking_face:
    falls du gerne bits schupfst, dann koennte es hilfreich sein wenn du weiszt dass ein '/ 2' gleich mit einem '>> 1' ist. wenn du dann verstehst was das programm macht, dann sollte auch der 2er-log sinn ergeben.[/edit]

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

    Einmal editiert, zuletzt von Kampi (1. Dezember 2009 um 16:15)

  • anwesender
    8
    anwesender
    Mitglied
    Reaktionen
    12
    Punkte
    647
    Beiträge
    125
    • 2. Dezember 2009 um 00:37
    • #3

    1) ist in der while absichtlich > 1 und nicht >0?
    2) wenn es >0 macht es nichts anderes als die länge der zahl in binärer darstellung zu zählen, bei >1 seh ich denn sinn dahinter noch nicht ganz...
    3) der abgerundete ld von Kampi ist der beste tipp wenn es tatsächlich >1 ist...
    (bei >0 wäre das ergbnis aufzurunden)

    Thomas

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 2. Dezember 2009 um 09:03
    • #4
    Zitat von anwesender


    2) wenn es >0 macht es nichts anderes als die länge der zahl in binärer darstellung zu zählen, bei >1 seh ich denn sinn dahinter noch nicht ganz...

    ob es sonderlich sinnvoll ist sei dahingestellt, aber so zeigt das ergebnis das hoechste [tex='2^{wievielte}'][/tex]

    bit das man anpatzen muss um die zahl darstellen zu koennen.

    zb 7: das hoechste ist das 2^2er (und dann halt noch 2^1 und 2^0).

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • anwesender
    8
    anwesender
    Mitglied
    Reaktionen
    12
    Punkte
    647
    Beiträge
    125
    • 2. Dezember 2009 um 10:11
    • #5
    Zitat von Kampi

    ob es sonderlich sinnvoll ist sei dahingestellt, aber so zeigt das ergebnis das hoechste

    [tex='2^{wievielte}'][/tex]

    bit das man anpatzen muss um die zahl darstellen zu koennen.

    zb 7: das hoechste ist das 2^2er (und dann halt noch 2^1 und 2^0).

    schon klar, aber wenn mans in dem zusammenhang braucht, geht man normalerweise ja gleich vom ld aus... wie auch immer...

    Thomas

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 2. Dezember 2009 um 10:20
    • #6
    Zitat von anwesender

    schon klar, aber wenn mans in dem zusammenhang braucht, geht man normalerweise ja gleich vom ld aus

    natuerlich. das beispiel schaut aber nach einer hausaufgabe aus bei der man eben drauf kommen soll dass man den ld verwenden soll...

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • Jensi
    28
    Jensi
    Mitglied
    Reaktionen
    141
    Punkte
    8.486
    Beiträge
    1.649
    • 2. Dezember 2009 um 12:15
    • #7
    Zitat von Kampi

    natuerlich. das beispiel schaut aber nach einer hausaufgabe aus bei der man eben drauf kommen soll dass man den ld verwenden soll...


    Und ihr habts es verraten :)

    Naja, jetzt muß er halt noch draufkommen, wie man den ld ausrechnet, wenn der in der Math Library nicht extra implementiert ist.

  • Wolfibolfi
    37
    Wolfibolfi
    Mitglied
    Reaktionen
    186
    Punkte
    14.936
    Beiträge
    2.942
    • 2. Dezember 2009 um 15:36
    • #8

    Kann er ja einfach mit "man ld" nachlesen.:shiner:

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • anwesender
    8
    anwesender
    Mitglied
    Reaktionen
    12
    Punkte
    647
    Beiträge
    125
    • 2. Dezember 2009 um 15:53
    • #9
    Zitat von Wolfibolfi

    Kann er ja einfach mit "man ld" nachlesen.:shiner:


    also wenn das so weitergeht wird das noch TDM (thread des monats) :grinning_squinting_face:

    Thomas

  • Wolfibolfi
    37
    Wolfibolfi
    Mitglied
    Reaktionen
    186
    Punkte
    14.936
    Beiträge
    2.942
    • 2. Dezember 2009 um 17:58
    • #10

    Psst!;)

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung