Wat is Gehele deling (integer division)?

Deling van gehele getallen die een geheel quotiënt oplevert. Hoe het deel achter de komma wordt behandeld, verschilt per taal: sommige kappen af richting nul (C, Java), andere ronden naar beneden af richting min oneindig (// in Python). Voor positieve getallen zijn de resultaten gelijk, voor negatieve verschillen ze.

Japanse benaming: 整数除算

“Gehele deling (integer division)” komt voor in 2 oefenvragen uit 2 onderwerpen, bijv. Computerarithmetiek, Basis van programmeren (pseudocode traceren).

Vakgebied: Basis van programmeren (pseudocode traceren)

Verschillen bij negatieve getallen

−7 delen door 2 geeft in C en Java, die afkappen richting nul, een quotiënt van −3 en een rest van −1. De // van Python, die naar beneden afrondt, geeft een quotiënt van −4, en % geeft een rest van 1. In beide gevallen geldt „quotiënt × deler + rest = deeltal”; de rest krijgt in C het teken van het deeltal en in Python het teken van de deler. Dit veroorzaakt fouten als programma's die met negatieve getallen werken, in een andere taal worden herschreven.

In pseudocode

Vragen in pseudocode leggen in de vraag uit hoe het deel achter de komma bij ÷ wordt behandeld. Zegt de vraag bijvoorbeeld „bij toekenning aan een variabele van het type integer worden de cijfers achter de komma weggelaten”, dan valt bij het toekennen van (lo + hi) ÷ 2 aan de integervariabele mid de 0,5 weg als lo + hi oneven is. Dit afkappen beïnvloedt resultaten zoals de middelste positie bij binair zoeken.

Verband met verschuivingen

Gehele deling door een macht van 2 kan ook worden berekend met een verschuiving naar rechts in binaire vorm. Voor gehele getallen zonder teken is x gedeeld door 2 gelijk aan x één bit naar rechts verschoven. Een rekenkundige verschuiving naar rechts van een negatief getal rondt echter naar beneden af, dus het resultaat kan verschillen van afkappen richting nul.

Nu oefenen: vragen over Gehele deling (integer division)

Wat is het resultaat dat de norm voorschrijft wanneer bij drijvendekommabewerkingen volgens IEEE 754 een positief getal door 0 wordt gedeeld?

  1. A0
  2. BHet grootste genormaliseerde getal
  3. CPositief oneindig
Antwoord en toelichting tonen

Antwoord: C. Positief oneindig

IEEE 754 bepaalt dat het delen van een getal ongelijk aan 0 door 0 afhankelijk van het teken positief of negatief oneindig oplevert. Oneindig wordt voorgesteld door een bitpatroon met alleen enen in de exponent en een mantisse van 0 en wordt ook gebruikt als resultaat bij overflow. Het programma hoeft niet te stoppen en de berekening kan doorgaan, waarna het resultaat kan worden onderzocht om afwijkingen te vinden. 0 ÷ 0 levert NaN op, omdat de waarde onbepaald is. Anders dan bij gehele deling stopt drijvende komma standaard niet met een uitzondering.

Veelgestelde vragen

Wat gebeurt er bij delen door nul?

Gehele deling door nul is in veel talen een runtimefout (een exceptie) en in C ongedefinieerd gedrag. Programma's horen vóór het delen te controleren dat de deler niet nul is.

Hoe hangen quotiënt en rest van een gehele deling samen?

Met quotiënt q en rest r geldt deeltal = q × deler + r. Quotiënt en rest worden als paar gedefinieerd, dus als de afronding van het quotiënt verandert (afkappen of naar beneden afronden), verandert ook de rest.

“Gehele deling (integer division)” in de toelichting

Vragen met “Gehele deling (integer division)” (2)

  1. Wat is het resultaat dat de norm voorschrijft wanneer bij drijvendekommabewerkingen volgens IEEE 754 een positief getal door 0 wordt gedeeld?
  2. ÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Wat is de retourwaarde als de volgende functie f wordt aangeroepen als f(9087)?

Verwante termen

IEEE 754 Exponent Mantisse (significand) NaN Variabele Argument Retourwaarde (return value) Modulo-operatie Afrondingsfout Array

Naar de woordenlijst