Wie bekomme ich den Quotienten und den Rest in einem einzigen Schritt? [duplicate]

Lesezeit: 2 Minuten

Benutzer-Avatar
dtech

Mögliches Duplikat:

Teilen und gleichzeitig Rest bekommen?

Ist es möglich, sowohl den Quotienten als auch den Rest der ganzzahligen Division in einem einzigen Schritt zu erhalten, dh ohne zweimal eine ganzzahlige Division durchzuführen?

  • Du meinst das “Ergebnis” der Division? Er wird „Quotient“ genannt.

    – R.Martinho Fernandes

    29. November 2011 um 21:56 Uhr

  • Nun, sagen wir, ich nenne “25 % 10”, was 5 ergibt, denn 2×10 = 20 und 5 ist der Rest, was ich auch aus der Modulo-Operation herausholen möchte, ist die 2, ist das möglich?

    – dtech

    29. November 2011 um 21:57 Uhr

  • Einige CPUs und einige Sprachen haben diese Fähigkeit, siehe zB stackoverflow.com/questions/3895081/…

    – PaulR

    29. November 2011 um 21:58 Uhr


  • Die meisten Compiler (sollten) optimieren so etwas wie int c = a % b; int d = a / b; in einem Arbeitsgang (z. div auf x86, was beides zurückgibt).

    – Matthäus Iselin

    29. November 2011 um 21:59 Uhr

  • Was meinst du mit Einzelschritt? Suchen Sie eine einzelne Funktion zum Aufrufen? Suchen Sie etwas, das eine einzelne Montageanleitung generiert? Suchen Sie nach etwas, das eine Assemblierung generiert, deren Ausführung eine bestimmte Anzahl von Taktzyklen benötigt?

    – Michael Preis

    29. November 2011 um 22:03 Uhr

Benutzer-Avatar
John Dibling

div werde dies tun. Sehen Hinweis und Beispiel:

/* div example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  div_t divresult;
  divresult = div (38,5);
  printf ("38 div 5 => %d, remainder %d.\n", divresult.quot, divresult.rem);
  return 0;
}

Ausgabe:

38 div 5 => 7, remainder 3.

BEARBEITEN:

Die C-Spezifikation sagt:

7.20 Allgemeine Dienstprogramme

The types declared are size_t and wchar_t (both described in 7.17),
div_t
which is a structure type that is the type of the value returned by the div function,
ldiv_t
which is a structure type that is the type of the value returned by the ldiv function, and
lldiv_t
which is a structure type that is the type of the value returned by the lldiv function.

… aber es sagt nicht, was die Definition von ist div_t ist.

  • @ddriver: Ja, aber siehe meine Bearbeitung.

    – Johannes Dibling

    29. November 2011 um 22:09 Uhr

  • ja vielen dank für die ausführliche antwort

    – dtech

    29. November 2011 um 22:11 Uhr

  • FYI – Die GLIBC-Implementierung von div macht einfach eine Division und ein Modulo, also gewinnen Sie nichts. Was Sie tatsächlich gewinnen, ist der Funktionsaufruf-Overhead.

    – Mike Steinert

    29. November 2011 um 22:46 Uhr

  • @MikeSteinert: Das hängt von Ihrer Architektur ab – z. B. hat glibc eine Montage Umsetzung von div für Alpha

    – Café

    29. November 2011 um 23:52 Uhr


Ja, es gibt eine Standardfunktion namens div() (und ldivund vielleicht sogar lldiv) das macht das.

1245920cookie-checkWie bekomme ich den Quotienten und den Rest in einem einzigen Schritt? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy