Frage zu Modulo



  • Hallo,

    was genau ist dieses "Modulo" ok %2 das weiss ich was das ist damit kann ich überprüfen ob bei der Division ein Rest enstanden ist oder nicht.

    Ich hab vor ein paar Tagen mal einen Quelltext gefunden da drin stand %24
    Ich habe mal verschiedene Modulo Sachen ausprobiert aber irgendwie weiss ich nicht was das % da genau macht.

    Warum bekomme ich hier bei %24 eine 4 ausgeben und bei %3 eine 1 ?
    Was genau rechnet den der PC da?

    #include <iostream>
    using namespace std; 
    
    int main(int argc, char* argv[])
     { 
    
    int erg;
    
    erg = 8 / 2;  
    
    cout<<"Ergeniss: " << erg << endl
        <<"Rest: " << erg % 2<< endl;  // Gibt 0 aus
    
    cout<<"Modulo 3: " << erg % 3 << endl ;   // Gibt 1 aus
    cout<<"Modulo 5: " << erg % 5 << endl ;   // Gibt 4 aus
    cout<<"Modulo 24: " << erg % 24 << endl ; // Gibt 4 aus
    
    system("PAUSE");
     }
    

  • Mod



  • a%b ist der Rest, der bei der Division a/b entsteht.

    Bei 4 % 24 bekommst du deshalb 4 zurück, weil 4/24 = 0 mit Rest 4. Bei 4 % 3 bekommst du 1, weil 4/3 = 1 mit Rest 1



  • % ist der Divisionsrest bei der Ganzzahldivision. Also,

    (a/b)*b + a%b == a    für b!=0
    

    Beispiel mit a=12, b=5

    (12/5)*5 + 12%5 == 12
       2         
       \  /      2
        10
          \    /
            12
              \         /
                 true
    

    % kann u.U. aber auch negative Zahlen zurückgeben, wohingegen man Restklassen typischerweise mit Zahlen repräsentiert, die nicht negativ sind.

    erg = 4;
    cout<<"Modulo  2: " << erg %  2 << endl; // Gibt 0 aus
    cout<<"Modulo  3: " << erg %  3 << endl; // Gibt 1 aus
    cout<<"Modulo  5: " << erg %  5 << endl; // Gibt 4 aus
    cout<<"Modulo 24: " << erg % 24 << endl; // Gibt 4 aus
    

    (von mir editiert)

    Ist doch jetzt klar, wieso da 0,1,4,4 rauskommt, oder?

    kk


Log in to reply