🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #2370

Re: Działania na liczbach dziesiętnych "z przecinkiem"

#2370
From: Michoo
Date: Sun, 08 Aug 2010 20:41
42 lines
2333 bytes
Remek pisze:
> Użytkownik "Bernard" napisał:
> 
>> A po co na hex?
> 
>> Reprezentacja w postaci cyfr dziesiętnych (ASCII) jest cakiem
>> odpowiednia dla takiego kalkulatora.
> 
> Widocznie czegoś nie wiem. Mógłbys podać przykład kodu dla procesora x86,
> który wykona działanie i poda prawidłowy wynik?
> 
> 3132 * 32 = 3234  (w ASCII)
struct num{
   uint16_t len;
   uint8_t *data;
};
data zawiera wartości 0-9, na ascii zamienia się tylko do wyświetlenia, 
kolejność: od lewej do prawej. wykonujesz na tym mnożenie pisemne - nie 
jest to specjalnie wydajne, ale sprawdza się do kalkulatora całkiem nieźle.

Pseudokod:
num mul(num *a,num *b){
   num c;
   c.data = malloc(a->len+b->len);
   memset(c->data,0,a->len+b->len);
   for(int i=0;i<a->len;i++)
     for(int j=0;j<b->len;j++)
       add(c->data+i,(a->data[i]*(uint16_t)b->data[j]));
   c->len=len(c->data,a->len+b->len);
   c->data = realloc(c->data,c->len);
   return c;
}
Musisz sprawdzić, czy nie ma błędów i skompilować.
len zwraca ile bajtów zajął wynik w rzeczywistości - liczy się przez 
przeglądanie od końca tablicy tak długo jak zawiera zera i odjęcie od 
początkowego rozmiaru.
add dodaje wynik pojedynczego mnożenia do wyniku częściowego (trzeba 
dodać dwa bajty i rozpropagować ewentualne przepełnienie)

-- 
Pozdrawiam
Michoo
Technical Details
Message-ID: <i3n4oe$6tl$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail
References: <i3jtit$141$1@inews.gazeta.pl> <i3lr5r$17l$1@news.onet.pl> <i3m156$5fk$1@inews.gazeta.pl> <i3moae$p2s$1@newsread1.aster.pl> <i3n2br$j7b$2@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail
From: Michoo <michoo_news@vp.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: Działania na liczbach
 dziesiętnych "z przecinkiem"
Date: Sun, 08 Aug 2010 22:41:27 +0200
Organization: http://onet.pl
Lines: 42
Message-ID: <i3n4oe$6tl$1@news.onet.pl>
References: <i3jtit$141$1@inews.gazeta.pl> <i3lr5r$17l$1@news.onet.pl> <i3m156$5fk$1@inews.gazeta.pl> <i3moae$p2s$1@newsread1.aster.pl> <i3n2br$j7b$2@inews.gazeta.pl>
NNTP-Posting-Host: c6-100.icpnet.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1281300047 7093 62.21.6.100 (8 Aug 2010 20:40:47 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Sun, 8 Aug 2010 20:40:47 +0000 (UTC)
User-Agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090706)
In-Reply-To: <i3n2br$j7b$2@inews.gazeta.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit