Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hi @all,

ich brauch eure Hilfe,

wie lautet der Code dafür:

Wenn iEingabe nicht durch 2 teilbar ist, dann .....

Danke für eure Hilfe,

thx kaffeemacher

Das geht ganz einfach mit dem Modulo-Operator:

if( iEingabe % 2 == 0 ) {

    printf( "%d ist durch 2 teilbar.\n", iEingabe );

} else {

    printf( "%d ist nicht durch 2 teilbar.\n", iEingabe );

}

Danke für deine Antwort.

Dies müsste doch dann auch so klappen

if ( iEingabe % 8 == 0 )

{

cout << "durch 8 teilbar" << endl;

}

else

{

cout << "nicht durch 8 teilbar" << endl;

}

greetz kaffeemacher

Wieso müsste? Klappt das bei dir etwa nicht?

Der Modulo-Operator gibt immer den Restwert einer ganzzahligen Division. Daraus ergibt sich, dass das Ergebnis immer null ist, wenn eine Zahl "ganz" durch eine andere Zahl teilbar ist, da dann kein Rest bleibt.

Beispiele:

- 32 ist ganz durch 8 teilbar, das Ergebnis ist 4 Rest 0. Modulo würde also 0 liefern.

- 43 ist nicht ganz durch 8 teilbar, das Ergebnis ist 5 Rest 3. Modulo liefert also 3.

Guten Morgen,

danke für deine Erklärung. :)

Hat mir sehr geholfen :marine

greetz kaffeemacher

Ob das effizienter ist, kann man so pauschal nicht sagen. Das kommt ganz darauf an, was der Compiler daraus fabriziert und wozu die CPU fähig ist.

Ausserdem hättest du gleich noch dazu schreiben sollen, wie das mit bitweisen Operatoren funktioniert:

if( iEingabe & 1 ) {

    /* ungerade, nicht durch zwei teilbar */

} else {

    /* gerade, durch zwei teilbar */

}

Davon mal abgesehen, ist der Modulo-Operator flexibler, da man die Teilbarkeit mit einer beliebigen Zahl prüfen kann.

Hallo,

Original geschrieben von Crow T. Robot

Davon mal abgesehen, ist der Modulo-Operator flexibler, da man die Teilbarkeit mit einer beliebigen Zahl prüfen kann.

Nach der Teilbarkeit durch eine beliebige Zahl wurde aber nicht gefragt. Man sollte für ein bestehendes Problem nach Möglichkeit immer eine effiziente Lösung suchen, die unabhängig (auch in Bezug auf die Performance) von Compiler, Betriebssystem und CPU ist. Modulo ist da ein sehr schlechtes Beispiel.

Mir ist keine CPU bekannt, auf der eine Modulo Operation schneller als eine Bit-Operation ist. Hast Du da mal ein Beispiel?

Nic

Hallo,

Hast Du den Artikel auch genau gelesen? Es geht hier nicht um die Abbildung der C-Modulo Funktion in Hardware, sondern um einen Instruktion, die in der Lage ist a x b + c + d in einer Instruktion zu Kodieren (und _möglicherweise_ auch in einem Zyklus auszuführen). Üblicherweise würden man mindestens zwei Instruktionen benötigen. Die Instruktion wird verwendet, um die Modulo-Artithmetik zu beschleunigen, nicht um den ganzzahligen Rest einer Division in einem Zyklus zu erzeugen. Hinzu kommt, das es in dem von Dir genannten Artikel um die Multiplikation grosser Zahlen geht (1024 Bits und nicht um die natürliche Wortlänge der CPU, also 32 oder 64 Bit), wie sie beispielsweise im Bereich der Kryptographie eingesetzt werden. Viele moderne CPUs unterstützen diese oder ähnliche Instruktionen.

Gute Compiler sind in der Lage, Modulo Berechnungen die mit zweier-Potenzen arbeiten auf die entsprechende Bit-Operation abzubilden, die komplett in Hardware abgearbeitet werden kann (man sollte sich aber nicht darauf verlassen!).

Nic

Danke für EURE Beiträge :D

Ihr habt mir sehr geholfen

gruß kaffeemacher

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.