Sida 2 av 2
Postat: 18 januari 2005, 16:27:10
av danei
kolla i acii-tabellen. Det är ganska lätt. Men jag kommer inte ihåg exakt hur det var. Men alla talen ligger i följd. så det är bara att ta bort förskutningen.
Postat: 18 januari 2005, 16:47:09
av Rymdninja
jo..._det_ är inget problem....det jobbiga är när det kommer
"23664"...hur gör man om det till binärt enkelt...?
Postat: 18 januari 2005, 16:49:31
av danei
Efter som du ska räkna med basen 10 så undrar jag om det inte är lättast att ha en byte per siffra.
Postat: 18 januari 2005, 16:57:36
av AndLi
Kod: Markera allt
uint16 convert(char *indata)
{
uint16 result = 0;
uint16 i = 10000
while(*indata)
{
result += (*indata - '0') * i;
i /= 10;
if(!i) i=1; //fix
indata++;
}
}
den klarar bara av tal upp till 65535, max fem tecken, inget negativt, strängen ska vara nullterminerad, och jag har säkert pekat nått fel, men så gör man quick and dirty
EDIT: missa ett +, den funkar nu!
Suck, den kommer ju bara funka med 5 siffriga tal.. Ibland är jag rätt bra trög.... jaja.. ni får se till att formatera asciiteckena med nollor först

Postat: 18 januari 2005, 17:10:56
av Rymdninja
danei skrev:Efter som du ska räkna med basen 10 så undrar jag om det inte är lättast att ha en byte per siffra.
hmm.....det skulle juh vara en ide....
Det är kanske inte så snyggt, men det är nog helt klart enklare att implementera...

Postat: 18 januari 2005, 17:24:48
av cyr
Suck, den kommer ju bara funka med 5 siffriga tal.. Ibland är jag rätt bra trög.... jaja.. ni får se till att formatera asciiteckena med nollor först

Om man kör åt andra hållet och behandlar minst värda siffran först så klarar man dels valfritt antal siffror (tills värdena blir för stora) och dels så får man multiplikation med 10 istället för division, vilket görs med bara ett par shift och additioner på en liten processor (utan mul och div i hårdvara).
Postat: 18 januari 2005, 17:32:48
av AndLi
cyr: sant sant.. men det blir ju jobbigare eftersom man måste ta reda på hur lång strängen är i förväg.. så man vet var man ska sluta...
iof är det ju bara att whilea sig på samma sätt jag gör, lagra adressen och sen whilea sig igenom igen från andra hållet.. men det kommer ju gå åt en massa mer minne och instruktioner

Postat: 18 januari 2005, 19:00:28
av strombom
Har ni redovisat era projekt ?
Jag skrev klart miniräknarprogrammet men har inte orkat redovisa än

Jag tog ändå mer än tillräckligt med poäng i höstas så det är lite svårt att motivera sig
Här är mitt program om någon vill kika:
http://authors.aspalliance.com/aylar/Vi ... odeID=3768
Kompilerat:
http://authors.aspalliance.com/aylar/Vi ... odeID=3769
/Johan
Postat: 22 januari 2005, 02:55:00
av erkki
Enklast är att implementera en RPN räknare, då blir det mycket enklare att programmera gränssnittet mot användaren och ni kan koncentrera er beräkningsdelen. Frågan är bara hur duktig AVRen är på att beräkna McLaurin-serier.