Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Integer vs. Long

Mart77
16 antwoorden
  • Oke… Moet de programmeur in het huidige tijdperk nog een Integer gebruiken?? Processorkracht genoeg toch? En een Integer loopt maar van -32000 t/m 32000… wat als ik een For i = 1 to n doe, en n > 32000 ??

    Dus… waar 't op neer komt… Heeft 't nog nut om een variabele als Integer te declaren, of kan men gewoon meteen voor de Long gaan? :)

    Grtz
  • Kort samengevat: Ja. Het heeft zeker nut om iets als int te declareren. Sterker nog, zelfs short kan heel goed zijn. Als je van te voren weet dat een variable nooit een grotere waarde krijgt dan iets moet je altijd het kleinst mogelijk type kiezen. Als je met grotere projecten aan de slag gaat, dan scheelt dat grote hoeveelheden RAM.
  • Integer gaat toch veel verder?
    In Delphi is hij veel groter, namelijk: -2147483648 t/m 2147483647.

    De integer is dan vast kleiner in de taal die je bedoelt?
  • Dat is een longint idd

    een gewonde integer (signed dus) is 16bits, dus van -32768 tot 32768 (lijkt me, iets minder waarschijnlijk, moet ook nog een 0 bij)
    een unsigned integer is 15bits, van 0 tot 32768

    een longint is 32bits, dus van -2147483648 tot 2147483648
    een unsigned longint is 31bits, dus van 0 tot 2147483648.

    de '-' neemt nl ook één bit in beslag…

    mogelijk is mijn verhaal van de unsigned niet helemaal correct, het kan ook zijn dat deze 2x zo groot mag zijn…
  • [quote:e74530b534="webspider"]
    mogelijk is mijn verhaal van de unsigned niet helemaal correct, het kan ook zijn dat deze 2x zo groot mag zijn…[/quote:e74530b534]
    Idd, het "teken"-bit is immers beschikbaar.
  • Wat is eigenlijk precies het verschil tussen signed en unsigned?
  • signed is dat er ook negatieve waarden opgeslagen kan worden. In Delphi bijv heb je shortInt en Byte. Allebei dezelfde groote, alleen kan shortInt van -128 tot +127 gaan ofzo, en byte tot +255.
  • ShortInt is dus signed en Byte is unsigned? 8)
  • Ja in C++ zet je er gewoon unsigned achter :-)
  • En bijvoorbeeld Cardinal is unsigned 32 bit, dus 0 t/m 4294967295. Er is ook een Int64 in Delphi, die is signed 64 bit. Bestaat er dan geen unsigned 64 bit?
  • Indien dit gewoon een eenvoudig progje is kun je inderdaad beter de long nemen, maar gaat het om een ingewikkeld prog(bijv. een emulator) en je weet zeker dat de waarde niet te hoog wordt, dan zou ik in verband met de snelheid toch zeker een integer nemen…
  • het is zoizo een goede programmeerstijl om het kleinst mogelijke variablegrootte te gebruiken. Ik ken iemand en hij heeft een programma gemaakt voor het onthouden van verjaardagen. Hij had 10 invoervelden gemaakt voor verjaardagen (dus je weet… er kunnen niet meer dan 10 personen komen). Maar hij heeft voor de index toch int64 gebruikt. Dat kan toch gewoon geen efficiente manier van programmeren zijn? Nu heeft hij versie 2.0 uitgebracht, en daar kan je een paar duizend miljoen verjaardagen toevoegen. Niemand heeft zoveel/vrienden contacten. Dan zou hij net zo goed byte (0 tot 255) of zelfs word kunnen gebruiken (0 tot 65535).
  • [quote:8323ad930e="microchip"]het is zoizo een goede programmeerstijl om het kleinst mogelijke variablegrootte te gebruiken. Ik ken iemand en hij heeft een programma gemaakt voor het onthouden van verjaardagen. Hij had 10 invoervelden gemaakt voor verjaardagen (dus je weet… er kunnen niet meer dan 10 personen komen). Maar hij heeft voor de index toch int64 gebruikt. Dat kan toch gewoon geen efficiente manier van programmeren zijn?
    [/quote:8323ad930e]
    Om efficientie redenen kan het soms beter zijn om een andere variabelegrootte te gebruiken. Meestal lost de compiler dit soort problemen op.
    [quote:8323ad930e="microchip"] Nu heeft hij versie 2.0 uitgebracht, en daar kan je een paar duizend miljoen verjaardagen toevoegen. Niemand heeft zoveel/vrienden contacten. Dan zou hij net zo goed byte (0 tot 255) of zelfs word kunnen gebruiken (0 tot 65535).[/quote:8323ad930e]
    Daar ben ik het niet mee eens.

    Denk aan het [i:8323ad930e]"Year-2000"[/i:8323ad930e] probleem…
    Bill Gates: 640 kB …
    We hebben genoeg IP adressen…
    etc.

    Of het moet op commercieel gebied gaan om een salami tactiek
  • Ik zeg dat je goed moet uitstippelen welke waardes zouden kunnen gebruikt worden voordat je een variable defineert. Dat probeer ik met mijn voorbeeld duidelijk te maken.
  • Aansluitend bij wat h4xX0r impliciet al noemde: afhankelijk van het systeem dat je gebruikt, kan het juist heel goed zijn om altijd 32-bit vars te gebruiken en geen 8- of 16-bit, ook al lijkt dat logischer gezien de maximale waarde die je erin stop. De hedendaagse Pentium, bijvoorbeeld, is geoptimaliseerd voor 32 bit (dus: gebruik een int), en een short vertraagd het programma dan ook.
  • Daar wil ik wel meer van weten. Bedoel je daarmee dat als een 32 bit processor 8 of 16 bit variablen te verwerken krijgt, dat dan een deel van de rekenkracht niet benut wordt? En is dat dan zodanig dat het geheugen dat je bespaart het niet waard maakt?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.