Abuse Melding

Je hebt een klacht over de onderstaande posting:

26-11-2019, 17:01 door Erik van Straten

Door SPer: Door Anoniem: 2^15 = 32768, 2 bytes woord ergens? Dat zou 16 bits zijn ;-) en 2 x zo lang meegaan ...... Niet als er een signed integer wordt gebruikt (wat gangbaar is). Als je 1 optelt bij decimaal 32767 (hexadecimaal 0x7FFF) in een signed integer-register van 16 bits, wordt de nieuwe waarde 0x8000, hetgeen (met de gebruikelijke two's complement interpretatie) leidt tot het decimale getal -32768. De programmeur verwachtte waarschijnlijk geen negatieve getallen in zijn code, dit is een veel gemaakte fout - van ern type dat minder aan het licht komt naarmate CPU-registers (en de gebruikte geheugenruimte) toenemen, waardoor het steeds minder loont om variabelen in zo klein mogelijke registers te stoppen. En als je, "blind" test en dat, in dit geval, minder dan 32768 uur doet, kom je hier natuurlijk ook niet achter. Gangbaar in moderne CPU's zijn registers van 32 of zelfs 64 bits , maar microcontrollers (ook die op de printplaat op de HDD/SSD) lopen vaak achter op dit punt.

Beschrijf je klacht (Optioneel):

captcha