Gå til innhold

Snedige ting du lurer på V.2


Anbefalte innlegg

Når jeg får tak i et program som kan regne med 10-30 desimaler skal jeg regne ut hvor mye tiden slakker ned på overflaten av verdens tyngste person. :cool:

Nå lurer jeg på hvordan behandlingen av mer enn 17 desimalers forskjell kan oppstå.

Må vi over på 128 bits prosessorer (tilsvarende 64 bit vi har idag?)?

 

Nei.

Man kan "lett" behandle vilkårlig store tall i dag ved å dele dem opp i mindre deler, så og si. La oss si at vi kun har en 8-bits prosessor, som da kan utføre operasjoner på et eller to 8-bits tall (opp til verdien 255) og skal legge sammen to tall på opp til 16 bits hver, eks. tallene 32764 og 18539 (begge er 15 bit). På binærform vil addisjonen se slik ut:

 0111111111111100
+0100100001101011
=1100100001100111

 

Åpenbart funker det dårlig med en 8-bits prosessor. Løsning: Vi deler opp hvert tall i to:

 

Utfører addisjonen på den minst signifikante halvdelen:

 11111100
+01101011
=01100111

 

Vi får et bit i mente. Tar det med oss når vi utfører addisjonen på den mest signifikante halvdelen:

 01111111 
+01001000 
=11001000

 

Og vi har løsningen bare ved å slå sammen løsningen på begge.

Jeg er usikker på om det er slik det gjøres i praksis i programvare som behandler store tall, men dette er iallefall èn måte å gjøre det på.

 

Forøvrig støtter kalkulatoren i Gnome opptil 99 siffer.

 

En annen sak med potenser: På 32 bits kan man lett få plass til enorme tall ved å bruke nettopp potenser. IEEE sin standard for floating point-format (som etter min kunnskap er det som brukes på moderne PC-er) angir at du kan bruke ett bit for fortegn (-/+), 8 bits for potenser (som muliggjør potenser fra -127 til +127), og 23 bits for selve desimalene (som er et tall mellom 0 og 1). Man får selvsagt ikke mer enn 32 bits med presisjon på denne måten.

Endret av hallgeirl
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet-T9cKWhDpN0

så fritt vildt 2 nå og begynte å lure på noe.

 

har politiet våpen med seg i bilene? har de pumphagle og maskingevær som ligner m16/m4? så også ut som de hadde glock.

 

er det bare filmfantasi?

Lenke til kommentar

Riktig som Zlatzman sier.

 

Derfor man ikke bare stapper tall inn i helt vanlige float/real variabler og regner det rett ut, rett og slett fordi floats er unøyaktige. De inneholder bare et estimat av tallet det egentlig skal være. Fex en intel float kan ikke være 0.5678, men blir istedet 0.56779998540878.

 

Dette er fordi en floating point er representert i minnet som:

z = a * 2p

Hvor -2 < a < 2

 

I en vanlig 32- bit floating point, altså datatypen "float", så er 24- bit brukt til å representere "a" som er mellom -2 og 2. 24- bits vil si 16777216 tall/kombinasjoner, noe som vil si at vi tar tallinjen mellom -2 og 2 og deler den opp i 16777216 biter: 0,0000002384185791015625 mellom hver bit

 

Eksponenten er på 8 bits og kan være mellom -126 til 127 (0xFF er for NaN / Not A Number).

 

 

Dette betyr at vi kan lagre ekstremt store tall, største tallet er faktisk:

2 * 2^127 = 4,2535295865117307932921825928971 ^ 37

 

Men dette betyr også at jo større tall jo lavere nøyaktighet, og alle tall som ikke passer inn med den formelen må rundes av til det nærmeste tallet som passer. Derfor virker det kanskje litt ulogisk at 0.5678 blir "runda av" til 0.56779998540878, men det er altså fordi 0.5678 ikke passer inn, og 0.56779998540878 er det nærmeste som gjør.

 

 

 

Så har vi double precision, også kalt "double". Da bruker vi 64- bits totalt til å lagre basen og eksponenten, og da har vi altså mye høyere presisjon, men fremdeles ikke høyt nok for vitenskapelige beregninger, så derfor brukes det en helt annen metode til det. PC-en regner rett og slett symbolsk på mattestykkene og forenkler så mye som mulig først, så regner den på stykkene ved å bruke brøker, eksponenter, kanskje jobbe med tallene enkeltvis osv... for å få helt nøyaktige svar.

 

Fex så tar ikke programmet å gjør om 10^5 til floating point, for å så gjøre om 10^6 til floating point og gange de sammen for å få en veldig unøyaktig representasjon av 10^11. Den ser rett og slett ved hjelp av enkle matteregler at svaret blir 10^11.

 

Derfor har det fint lite å si om PC-en er 32- bit eller 64- bit, den forenkler og tar stykkene segmentvis sånn at det ikke blir noe problem.

Endret av ChrML
Lenke til kommentar
Kan ikke du gjøre den likningen? :yes:

 

Med forbehold om feil:

 

 

mimetex.cgi?\gamma en konstant, som = 6,67*10-11)

 

Setter inn for et år (som er 31 536 000 sekunder) og Jorden:

 

chart?cht=tx&chl=\sqrt{1-\frac{2\cdot 6,67\cdot 10^{-11}\cdot 5,97\cdot 10^{24}}{9\cdot 10^{16}\cdot 6,371\cdot 10^6}}\cdot 31536000 = 31 535 999,98 sekunder.

 

Altså, tiden går 0.02 sekunder saktere per år på jordoverflaten, enn et sted langt unna Jorden.

 

Så med månen:

 

chart?cht=tx&chl=\sqrt{1-\frac{2\cdot 6,67\cdot 10^{-11}\cdot 7,348\cdot 10^{22}}{9\cdot 10^{16}\cdot 1,737\cdot 10^6}}\cdot 31536000 = 31 536 000 (den runder opp til 1, må ha kalkulator med flere desimaler).

 

 

Altså, tiden går ca. 0.02 sekunder fortere per år på månen, i forhold til Jorden.

 

Hmm, jeg tippet 1 sekund på et tiår, men det var altså 1 sekund på et halvt århundre.

Endret av SeaLion
Lenke til kommentar
når nettverkskort har hastighet på f.eks 1gbit/sec, hva er vitsen med det når harddisker ikke kan overføre i så stor hastighet?

Noen SSD-enheter kan komme opp i denne skrivehastigheten visstnok. De koster jo også skjorta da.

 

 

Finnes det noen dyrearter som har medlemmer med mer enn to forskjellige kjønn?

 

Hva vil det si at gull har så og så mange karat?

Jeg så et TV-program for flere år siden om en alge eller noe slikt med flere hundre forskjellige kjønn. Ikke at de utdypet noe særlig hva kjønnene gjør, men allikevel. Angående dyrearter har jeg ikke hørt om noe lignende.

 

Og karat er en måte å måle renheten i gullsmykker. Én karat er 1/24 rent gull, 10 karat er 10/24, osv.

Endret av rollersnaeks
Lenke til kommentar
når nettverkskort har hastighet på f.eks 1gbit/sec, hva er vitsen med det når harddisker ikke kan overføre i så stor hastighet?

 

Du får da fint disker som kan overføre 125 MB/s, i tilegg har du raid, dessuten er jo det neste alternativet på stigen 12.5 MB/s (100 mbit), og det vil være en flaskehals for nesten alle disker, da foretrekker man jo at det ikke er en flaskehals.

 

AtW

Lenke til kommentar

Jeg så et program på National Geographic nå nettop om et virus som man tror tok livet av omtrent 80% av Aztekerne. Da muterte viruset slik at det ikke bare smittet fra rotter til mennesker, men også fra mennesker til mennesker. Det fikk meg til å tenke på fugleinfluensaen. Alle er så redde for at viruset skal mutere, slik at det kan smittes mellom mennesker. Men ville ikke en annen mutasjon komme før dette? Er det ikke flere dyr som er i kontakt med fuglene, som kan forårsake en mutasjon før det muterer mot mennesker?

Lenke til kommentar

Kanskje dette er et dumt spm, men finnes det noe jeg kan "tette" vinduet rundt kanten med?

 

Det har seg nemlig slik at vist det er kalt ute så blir det kondens på vinduet inne. Jeg tror det er "punktert"

 

Så da lurer jeg på om det finnes noen enkel måte å tette det på, uten å måtte bytte det ut?

Lenke til kommentar
Det hjelper vel ikke å tette det, da hvis det er punktert, så er det allerede vanndamp mellom de to (eller tre?) glassene som vil kondensere når det blir kaldt.

Jo det er det. Jeg tenkte bare at luften mellom glassene ikke blir kjølt ned så lett vist det er tett.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...