De rekenmachine.

Moderators: dirkwb, Xilvo

Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
Berichten: 416

De rekenmachine.

Als ik met mijn zak-rekenmachine ga rekenen met grote getallen en ik laat die door vermenigvuldiging steeds groter en groter worden, dan geeft de rekenmachine vanzelf een keer "Error of E" aan. En bij een beetje rekenmachine die ik heb, het is dan al wel een oude, de Casio fx 100, heeft een display met 10 cijfers, dus getallen tot 9.999.999.999 kan ik voluit op het display zetten. Voor grotere getallen geeft de rekenmachine machten van 10 aan, bijv. 1e 19, en daarmee loopt de grootte van getallen op tot 9,99999e 99, bij nog grotere getallen geeft ie "E" (de E van Error) aan, dus 1e 100 kent mijn zakrekenmachiene niet. Dat begrijp ik ook allemaal. Goed ik heb dan een computer daar staat ook een standaard rekenmachine bij, bij de bureau-accesoires. Nu ben ik ook aan het rekenen gegaan bij die rekenmachiene, en met steeds grotere getallen gaan vermenigvuldigen met elkaar. Bijv. ik begin met 10, dat kwadrateer is, dus 10^2=100, vervolgens kwadrateer ik 100, dat is 10.000, die ik op zijn beurt ook weer kwadrateer, dus 100.000.000 enz, enz.. op een geven moment ging die rekenmachine ook in 10 machten werken, en kreeg ik bijv, 1e 32, toen 1e 64, 1e 128, 1e 256, 1e 512 enz, die berekeningen gingen nogal snel, totdat ik op een gegeven moment op 1e 65536 zat en kwadrateerde, toen berekende die wel 1e 131072 uit, maar de berekeningen duurden voor nog grotere getallen ook steeds langer ik heb zelfs wel 1e 2.097.152 gehad, maar dat duurde wel bijna een half uur ofzo.

Maar goed waar ik heen wil is het volgende. Kan de rekenmachine van de computer( ik bedoel dan de rekenmachine die er standaard in zit bij bureau-assesoires) blijven doorrekenen met steeds groter wordende getallen? Of geeft die ook uiteindelijk "Error" aan? Of geeft die als de hele display(van zo'n 30 cijfers) vol zit dan aan 1e 1e 31 bijv? Wat hij zal toch niet tot het oneindige door kunnen rekenen (theoreties dan)? Wat is net zoals bij de gewone zakrekenmachine (die 9,999999e 99 als grootste getal) bij de rekenmachine van de computer het grootste getal dat die aan kan geven?

Berichten: 226

Re: De rekenmachine.

Ik weet niet waar de grens ligt, maar het maximum getal is beperkt.

1000^1000000 accepteert hij bijv niet.

Gebruikersavatar
Berichten: 367

Re: De rekenmachine.

Dit lijkt me een interessante vraag voor de software-ontwikkelaars van Microsoft.

(Ik neem hierbij even aan dat je een pc met Windows hebt...)

Meer in het algemeen gesproken: de "error" die het display weergeeft wordt gegenereerd door de software (en zijn beperkingen) die in het apparaat zit.

Dit geldt voor de computers en (ook) voor de rekenmachines.

ps.

Voor Windows XP kun je een "wetenschappelijke" calculator downloaden.

klik

(scroll een klein stukje naar beneden en selecteer de "Power Calculator")

Misschien gaat die nóg verder zonder "error" te geven :shock:

(ik heb het nog niet zelf getest :wink: )
Living on Earth can be expensive, but it does include a free trip around the sun.

Gebruikersavatar
Berichten: 4.810

Re: De rekenmachine.

Op de pc doet ie gewoon lekker door, maar op elke grafische rekenmachine kan je maar tot E^100 anders krijg je de bekende overflow error ... Zal wel zijn omdat z'n geheugen gewoon te klein is :wink:

Berichten: 48

Re: De rekenmachine.

als het een kwestie van geheugen is, zal de pc op een bepaald moment ook door z'n knieën gaan (zal lang duren), hangt er van af hoeveel geheugen je hebt denkik.
There are 10 types of people in this world, those who understand binary and those who don't

Gebruikersavatar
Berichten: 7.224

Re: De rekenmachine.

Ik weet niet hoe de standaard rekenmachine te werk gaat, maar in het algemeen kent een computer type variabelen. Zo zijn er booleans, integers singles en doubles. Elke variabele krijgt een hoeveelheid geheugen toegekend door het besturingssysteem, afhankelijk van welk type de variabele is.

Een boolean is 1 bit; een standaard integer is 2 byte, terwijl een long integer 4 byte is.

Een double (decimaal) wordt meestal gebruikt bij het rekenen. dit is een 8 byte variabele die bestaat uit een plus/minteken (1 bit), een exponent (11 bits) en een mantisse die het getal bevat (52 bit). Dit kan dan geschreven worden als:

(-1)s2c-1023(1+f)

Het grootste getal wat hiermee gevormd kan worden is 10308, maar niet alle getallen kunnen gevormd worden tot dit maximum.

Hoe de Windows rekenmachine te werk gaat weet ik niet, maar deze zal wel een speciaal algoritme hebben die het getal op een slimme manier opslaat (en dus niet in een standaard double variabele).
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

Berichten: 48

Re: De rekenmachine.

de grootte van elke type hangt af van je OS, zo is een integer op een 32-bit systeem 4 bytes (32/8 ) en op een 16bit 2 bytes. Als je een c++ compiler hebt, kan je met dit stukje eenvoudige code de grootte bepalen op je eigen pc

Code: Selecteer alles

#include <iostream.h>







   int main()



   {



     cout << "The size of an int is:tt"    << sizeof(int)    << " bytes.n";



     cout << "The size of a short int is:t" << sizeof(short)  << " bytes.n";



     cout << "The size of a long int is:t"  << sizeof(long)   << " bytes.n";



     cout << "The size of a char is:tt"    << sizeof(char)   << " bytes.n";



     cout << "The size of a float is:tt"   << sizeof(float)  << " bytes.n";



    cout << "The size of a double is:t"    << sizeof(double) << " bytes.n";



        return 0;



}
There are 10 types of people in this world, those who understand binary and those who don't

Gebruikersavatar
Berichten: 4.810

Re: De rekenmachine.

Hoe de Windows rekenmachine te werk gaat weet ik niet, maar deze zal wel een speciaal algoritme hebben die het getal op een slimme manier opslaat (en dus niet in een standaard double variabele).


JA lijkt wel logisch, op een bepaald moment zal die ook falen, alleen denk ik dat je een vrij hoge exponent zal moeten gebruiken :wink:

Gebruikersavatar
Berichten: 5.679

Re: De rekenmachine.

De windows rekenmachine (en ieder rekenprogramma trouwens) slaat z'n getallen in ieder geval niet op de standaard manier op.

Het ene rekenprogramma zit flexibeler in elkaar dan het andere, en kan dus grotere getallen aan dan het andere (door het slimmer in het geheugen op te slaan) maar uiteindelijk zijn ze allemaal begrensd.

Je hebt bijvoorbeeld 'slechts' 512 MB geheugen en 3 GB vrije diskruimte om het getal in op te slaan. Als het slim aanpakt kun je daar heel grote getallen in kwijt, maar niet oneindig lang natuurlijk. Hoe groter je getallen, hoe meer bytes (geheugen- en/of diskruimte) je nodig hebt om het op te slaan. En aangezien ram en diskruimte eindig zijn...
In theory, there's no difference between theory and practice. In practice, there is.

Re: De rekenmachine.

Nuja...je kan getallen volledig opslaan, zoals 12345,7689 , maar ook onvolledig zoals 15 * 10 ^ 15 (daar heb ik op een gebruikelijke manier 4 + 4 = 8 bits (= meestal 1 byte) voor nodig, probleem is alleen dat er dan gaten gaan vallen tussen de getallen van je verzameling, bijvoorbeeld die van de gehele getallen, dus dat je bijvoorbeeld 15,01 * 10^15 zou je als je het zo zou doen in 8 bits hetzelfde zijn als 15 * 10 ^ 15). volledig is het natuurlijk eindig, maar onvolledig kan je gewoon de afspraak maken dat je bijvoorbeeld alles dat boven de 15 * 10 ^ 15 als het symbool voor oneindig wordt weergegeven. (offtopic: eindelijk iets wat ik wél weet)

Re: De rekenmachine.

Er zijn software functies te bekomen waarbij je zelf kunt opgeven hoeveel bytes een getal omvat en hoeveel E je kunt hebben.

Dus 1.76557454584574857458349573459345734535353535E100000000000000000000000000000000

000 is toepasbaar,

Het rekenen gaat wel een stukje langzamer maar je kunt dan wel zeer grote getallen toepassen.

Ze hebben voor elke rekenkundige bewerking dan wel een funktie geschreven om met deze getallen om te gaan.

Meestal hebben ze het getal in een string of een eigen record-format opgeslagen.

Een integergetal kan men opslaan in 4 bytes maar ook kan men hiervoor een stringnemen.

Men kan een string vormen van zeg 1000 bytes lang waardoor men 250 integer getallen kan onderbrengen.

Het getal heeft dan het bereik 0 t/m (2^8000)-1.

;getalstring=optelstring1000(getalstring1,getalstring2);

Het duurt natuurlijk ruim 1000*3 langer om twee simpele bytes bij elkaar op te tellen.

Re: De rekenmachine.

Conclusie: je kan niet oneindig rekenen met je computer, daar de computer ook gebonden is aan de wetten van de elektronica en de natuur.

Je kan wel heel ver gaan 8)

Re: De rekenmachine.

9003002000000000000000000000000001000000000000000800000000000000000000

plus

1006666006666660066666647777777777777738888888888922222222222223456789

= 10009668006666660066666647777777778777738888888889722222222222223456789

De rekenmodule die dit uitrekende kan zelfs getallen van 100000 cijfers aan.

Gebruikersavatar
Berichten: 238

Re: De rekenmachine.

Op de pc doet ie gewoon lekker door, maar op elke grafische rekenmachine kan je maar tot E^100 anders krijg je de bekende overflow error ... Zal wel zijn omdat z'n geheugen gewoon te klein is  :wink:


Ik weet niet hoor, maar als ik mijn grafische rekenmachine (ti89) 3 * 9^150 intyp komt daaruit 4,10674437176 E 143.

Precies wat mijn Windows rekenmachientje ook zegt, alleen is die iets precieser, die gaat nog ongeveer 20 decimalen door.
Peter van Gemert

2e jaars Luchtvaart- en Ruimtevaarttechniek, TU Delft

Re: De rekenmachine.

is te zien welk rekenmachien ge gebruikt e... mijne T83+ gaat ook niet verder dan 9.99999e99, ligt gewoon aan de RAM

eigenlijk logisch da ge algemeen gesproken geen willekeurig groot getal kunt opslaan in een beperkt geheugen... als ge bvb Pi intypt is da ook nie Pi, maar goeie benadering van Pi...

Stel da ge toch met willekeurig grote getallen wilt, dan hebt ge waarsch willekeurig veel tijd nodig...

mvg

Andy

Reageer