Ergebnis 1 bis 20 von 245

Thema: 0x12 = 18??? - Das (Computer-)Geek-Quiz

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von DFYX Beitrag anzeigen
    Woraus bestand das Gehäuse des ersten Google-Servers bzw. wie sah es aus?
    Ich meine mich zu erinnern, dass das aus Lego war, sicher bin ich mir aber nicht. Und wie es aussah weiß ich erst recht nicht mehr.

  2. #2
    Zitat Zitat von dead_orc Beitrag anzeigen
    Ich meine mich zu erinnern, dass das aus Lego war, sicher bin ich mir aber nicht. Und wie es aussah weiß ich erst recht nicht mehr.
    Reicht völlig. Das Servergehäuse war aus wild zusammengewürfelten Legosteinen gebaut und dementsprechend bunt.

  3. #3
    Da Orkey keine neue Frage gestellt hat stelle ich mit Fyxens Erlaubnis eine Frage zur allgemeinen Erheiterung.

    In jeder langjaehrigen Programmiererfahrung kommt es unweigerlich dazu, dass man sich die eine oder andere Macke beim Schreiben von wartbarem Code zuzieht, um die Lesbarkeit ungemein zu erhoehen. So ist gerade eben in einem kleinen Testprojekt bei mir folgende Codezeile entstanden ...

    Code:
    for( static int r,g,b,d=0; d=!d; backgroundcolor = RGB (
     (++b>=32 && (b=0,++g>=32) && (g=0,++r>=32)) ? r=0 : r, g, b )) ;
    Diese Zeile steht mit einigem anderem kram in einer while(1) Schleife.

    Die Frage also: Was macht diese Codezeile bei wiederholtem Aufrufen ?

    Geändert von Ineluki (09.09.2008 um 19:15 Uhr)

  4. #4
    Nach einiger Dankzeit würde ich sagen, der Code folgendes macht:

    Er ruft die For-Schleife nur ein einziges mal (Aufgrund von d=!d, was nur einmal true sein kann).
    Dabei setzt er den Blauwert sowie, den Grünwert auf 0. Der Rotwert wird nur dann auf 0 gesetzt wenn beim Start der Schleife ++r ++g ++b >=32 sind, ansonsten behält r seinen Wert. Diese informationen werden, nun an eine Funktion geben die aus den Werten rgb eine einzige Variable macht, die die Hintergrundfarbe anzeigt. Daher:
    Die Hintergrundfarbe ist rot (r ist nie größer 31 und g, b sind sowieso auf 0 gesetzt). Bei jedem neuem Durchlauf wird r um eins erhöcht und wird heller, bis r g b >= 31 sind, wo r = 0 gesetzt wird (oder einfach nur immer plus eins zählt und so immer heller wird bis es 255 ist und dann wieder umschwingt und von vorne beginnt).

    Das ist was ich verstanden hab, bloss irgendwas sagt mir das es nicht stimmen kann, da diese Funktion irgendwie keinen Sinn ergibt o.O .

  5. #5
    nop, nicht richtig. wirklich alles in der Zeile ist wichtig. und alle variablen koennen sich aendern.

  6. #6
    Also doch wie ich gedacht habe, aber ich verstehe nicht ganz wieso das for-Konstrukt verwendet wird. RGB wird einmal pro Schleifenaufruf aufgerufen, und wenn man das jetzt so ungefähr machen würde, begäne das ganze von vorne. Um es zu veranschaulichen:

    Code:
    for(int r=0; r<32; r++)
      for(int g=0; g<32; g++)
        for(int b=0; b<32; b++)
          backgroundcolor = RGB(r, g, b);
    Wobei es am Schluss noch einen Spezialfall von 0, 31, 31 gibt.

  7. #7
    was meinst du mit Spezialfall von 0,31,31 ?

    Aber das ganze lasse ich mal gelten. Zwar wird backgroundcolor = RGB(r, g, b); nicht in so einer Schleife wie bei dir aufgerufen, sondern die Werte aendern sich bei jedem Durchlauf der While-Schleife einmalig, aber was solls.

    Ich fand jedenfalls den Code schoen obscure und er verdeutlicht gut die Verwendung des Komma-Operators.

    Drakes ist dran.

  8. #8
    Wird nichts, Freirunde.
    Btw. versteh ich eigentlich doch nicht ganz wie das da mit dem Kommaoperator funktioniert. o_O

  9. #9
    Dann schau mal, wo in meinem Quelltext ueberall Kommata stehen ...

    Die For-Schleife ist im uebrigen nur dazu da, um die variablendeklaration ebenfalls in dem Einzeiler unterzubringen und darin zu kapseln.

  10. #10
    Welche Zahl ist das:

    0x101011101111001

    Geändert von Drakes (26.10.2008 um 22:16 Uhr)

  11. #11
    Zitat Zitat von Drakes Beitrag anzeigen
    Welche Zahl ist das:

    0x101011101111001
    Taschenrechneraufgabe: 72340241558605825, wobei ich mir nicht sicher bin, ob du wirklich 0x101011101111001 und nicht die Binärzahl 101011101111001, was 22393 wäre.

  12. #12
    Zitat Zitat von DFYX Beitrag anzeigen
    Taschenrechneraufgabe: 72340241558605825 ... 22393
    Wäre es nicht 72340241558605820 (sagen mir die Konverter, kann aber nicht sein, wegen der letzten 1 O.o), und nein, ich meinte schon hexadezimal, sonst hätte ich 0b als präfix genommen. (hättest du doch nur nur 22393 geschrieben) Du bist dran.

Berechtigungen

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