Aktualności: C64 Power - online od stycznia 2000 !

Autor Wątek: zapis liczb w pamieci  (Przeczytany 726 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Slay_

  • Gość
zapis liczb w pamieci
« dnia: 22 Sierpnia 2002, 01:51 »
jesli w basicu napisze

X = -3.14159

to gdzie zostanie umieszczona liczba po znaku rownosci???

w jakim formacie sa zapisywane liczby calkowite, a w jakim rzeczywiste???



Jemasoft_

  • Gość
zapis liczb w pamieci
« Odpowiedź #1 dnia: 22 Sierpnia 2002, 17:45 »
>:to gdzie zostanie umieszczona liczba po znaku rownosci???

W pamieci oczywiscie. Dokladnie rzecz ujmujac w C64 jest wydzielony obszar pamieci dla Basica. W tym obszarze znajduje sie zarowno tresc programu w Basic\'u jak i wszelkie zmienne. Zorganizowane jest to tak, ze od adresu $0801 lezy program w Basic\'u a zaraz za nim nazwy zmiennych i przypisane im wartosci. Zeby bylo weselej liczby rzeczywiste zajmuja 5 bajtow a zapisane sa w postaci cechy i mantysy logarytmu. Liczby calkowite zajmuja 2 bajty ale nalezy pamietac, ze liczby calkowite przynaleza tylko do zmiennych procentowych czyli np. x%=4 , przyporzadkowanie x=4 przypisze zmiennej x wartosc 4 ale w postaci rzeczywistej a nie calkowitej.

Slay_

  • Gość
zapis liczb w pamieci
« Odpowiedź #2 dnia: 22 Sierpnia 2002, 22:50 »
no dobra. dziekuje. ale konkretniej prosze
konkretniej

na przyklad liczba calkowita 2114 ($0842) ma byc zapisana od adresu $2000
jak to bedzie wygladac???

$2000   ?
$2001   ?

a jesli bedzie to liczba o przeciwnym do tej znaku (ujemna)  -2114
jak ona zostanie rospisana???

teraz rzeczywiste
powiedzmy     -340.223
jak taka liczba bedzie wygladac ":w pamieci": (dajmy na to tez od adresu $2000)

o takie cus mi chodzi


Jemasoft_

  • Gość
zapis liczb w pamieci
« Odpowiedź #3 dnia: 22 Sierpnia 2002, 23:13 »
Konkretniej to proponuje odpalic C64, przypisac zmiennej np. x jakas wartosc i sprawdzic monitorem pamieci jak to interpreter zapisal. Ja podalem dosc danych zeby samemu przeanalizowac cala sprawe i odczytac wlasciwe komorki pamieci. Sprawy dalej nie wyjasniam bo bylaby to juz lopatologia stosowana. Moge podpowiedziec, ze sprawe ujemnosci liczby zalatwia sie jednym bitem zwykle najstarszym.
Cwiczenie czyni mistrza.

Slay_

  • Gość
zapis liczb w pamieci
« Odpowiedź #4 dnia: 22 Sierpnia 2002, 23:25 »
wrrr no niech tam

>:Cwiczenie czyni mistrza.

swieta prawda

Slay_

  • Gość
zapis liczb w pamieci
« Odpowiedź #5 dnia: 23 Sierpnia 2002, 09:04 »
kurcze, ale bede uparty i poprosze chociaz o wytlumaczenie mi zapisu liczb rzeczywistych, bo calkowite to ja juz wiem

wiec jak to sie dzieje, ze interpreter napotykajac na taka rzeczywista liczbe w pamieci wie, jak ja potem ":ladnie": wyswietlic???
probowalem w monitorze podpatrzec kilka przykladowych, ale nic z wyswietlonych mi wartosci nie pojmuje

no bo tak
robie cos takiego

a=1
b=2

c=4

a w monitorze mam
$0800 00 00 00 41 00 81 00 00 00 00 42 00 82 00 00 00 00 43 00 83 00 00 00 00
                          a=1                             b=2                             c=4

o co tu chodzi???

a=1    41 00    81 00 00 00 00
                       ^^^^^^^^^^^^
ktore z tych pieciu bajtow jest cecha, a ktore mantysa???

Jemasoft_

  • Gość
zapis liczb w pamieci
« Odpowiedź #6 dnia: 23 Sierpnia 2002, 23:08 »
Poniewaz nigdy nie interesowal mnie specjalnie zapis liczb rzeczywistych przez interpreter Basica ,gdyz nigdy w zyciu nie bylo mi to do niczego potrzebne, cale to dociekanie uwazam za rzezbe w gownie i zachodze w glowe do czego Ci to potrzebne ale wyjasniam co nastepuje:

w C64 przyjeto nastepujacy zapis liczb rzeczywistych

liczba= ((-1)^b)*(1+c)*2^(a-129)

np. liczba 1.32 ma postac 81 28 F5 C2 8F

co reprezentuje kolejno zapisane wartosci a=129 b=0 c=0.32

Zycze milej rzezby.

Slay_

  • Gość
zapis liczb w pamieci
« Odpowiedź #7 dnia: 23 Sierpnia 2002, 23:29 »
>:Poniewaz nigdy nie interesowal mnie specjalnie zapis liczb rzeczywistych przez interpreter Basica ,gdyz nigdy w zyciu nie bylo mi to do niczego potrzebne, cale to dociekanie uwazam za rzezbe w gownie i zachodze w glowe do czego Ci to potrzebne ale wyjasniam co nastepuje:
>:
>:w C64 przyjeto nastepujacy zapis liczb rzeczywistych
>:
>:liczba= ((-1)^b)*(1+c)*2^(a-129)
>:
>:np. liczba 1.32 ma postac 81 28 F5 C2 8F
>:
>:co reprezentuje kolejno zapisane wartosci a=129 b=0 c=0.32
>:
>:Zycze milej rzezby.

podumam nad tym. choc na pierwszy rzut oka nie kumam za bardzo o co tu biega. nie, nie jestem tepy na pewno dojde o co tu chodzi
do czego mi to potrzebne? ee tego no, kompilator pisze (wlasnego jezyka). pomyslalem sobie wiec, ze warto bedzie zobaczyc jak omawiana kwestia prezentuje sie w przypadku basica wlasciwie, to na razie bedzie to interpreter. maly zreszta. z czasem go rozbuduje i bede udoskonalac.
no i dziekuje kulturalnie na zakonczenie za cenna informacje i zyczenia

Jemasoft_

  • Gość
zapis liczb w pamieci
« Odpowiedź #8 dnia: 23 Sierpnia 2002, 23:46 »
Powaznie piszesz kompilator? To mnie strasznie zaciekawiles. Sam swego czasu nosilem sie z zamiarem stworzenia jakiegos jezyka tak prostego jak Basic ale z mozliwoscia takiej kompilacji, zeby kompilat mial niesamowitego kopa. Zagadnienie dosc ciekawe przyznam. Jak patrze na skladnie jezyka C to zachodze w glowe jak mozna bylo proste rzeczy tak sobie skomplikowac, ale do wszystkiego mozna sie przyzwyczaic. C++ natomiast jest wielkim dowcipem pewnego pana, ktory go wymyslil a inni nie skumali zartu i zaczeli w tym lajnie masowo pisac programy ocierajac pot z czola i polewajac przegrzane mozgi piwem.

Slay_

  • Gość
zapis liczb w pamieci
« Odpowiedź #9 dnia: 24 Sierpnia 2002, 00:01 »
phihihi, jakem rzekl:  interpreter na poczatek. potem kompilator.

co do ":sie noszenia":, to ja sie z tym nosze juz chyba trzeci rok!!!
czytalem kiedys taka ksiazke po angielsku. o pisaniu wlasnie kompilatorow traktowala. stara to ksiazka z biblioteki (notabene w naszej bibliotece duzo jest takich wlasnie starych, nawet o komodore, atari czy spektrum jest)
i tam w tej ksiazce autor zauwazyl, zreszta bardzo slusznie (tak sadze), ze jednym z najwiekszych problemow podczas pisania programow kompilujacych jest to, iz nastepuje w ktoryms ze wczesnych etapow programowania.. zaraz jak on to nazwal... ":fascynacja": - tak pisal. nastepuje ":fascynacja jezykiem": - tym do ktorego sie ten kompilator tworzy. i ja to 3 lata mialem kuzwa ale tydzien temu postanowilem (nie pierwszy juz, ale mam ktorys tak samo raz nadzieje, ze ostatni raz), iz wreszcie powaznie potraktuje ten temat, ze kurde wreszcie napisze ten kompilator. i wiecie co? nigdy jeszcze przed tem nie zabrnalem w tym tak daleko. programu pisac wprawdzie jeszcze nie zaczalem, ale raczej wszystkie ku temu sposobnosci juz posiadam. skompletowalem najwazniejsze do tego informacje: o typach danych wlasnie, strukturze samego jezyka, skladni, slowem o wygladzie. koncze teraz tylko prace nad tym wlasnie co sie dziac bedzie w pamieci komputera, co mniemam, ze sie bedzie dziac, bo czy dziac sie bedzie, to sie w praktyce okaze. oj rozpisalem sie. wystarczy

eXbee_

  • Gość
zapis liczb w pamieci
« Odpowiedź #10 dnia: 23 Sierpnia 2002, 23:29 »
>:w C64 przyjeto nastepujacy zapis liczb rzeczywistych
>:liczba= ((-1)^b)*(1+c)*2^(a-129)

  no kolego Slayer, piwo Jemasoftowi sie nalezy

Slay_

  • Gość
zapis liczb w pamieci
« Odpowiedź #11 dnia: 23 Sierpnia 2002, 23:43 »
>:  no kolego Slayer, piwo Jemasoftowi sie nalezy

emajla mu przesle

Slay_

  • Gość
zapis liczb w pamieci
« Odpowiedź #12 dnia: 24 Sierpnia 2002, 01:44 »
>:Poniewaz nigdy nie interesowal mnie specjalnie zapis liczb rzeczywistych przez interpreter Basica ,gdyz nigdy w zyciu nie bylo mi to do niczego potrzebne, cale to dociekanie uwazam za rzezbe w gownie i zachodze w glowe do czego Ci to potrzebne ale wyjasniam co nastepuje:
>:
>:w C64 przyjeto nastepujacy zapis liczb rzeczywistych
>:
>:liczba= ((-1)^b)*(1+c)*2^(a-129)
>:
>:np. liczba 1.32 ma postac 81 28 F5 C2 8F
>:
>:co reprezentuje kolejno zapisane wartosci a=129 b=0 c=0.32
>:
>:Zycze milej rzezby.


albo tepy jestem albo jestem glupi
o co tu q2 chodzi???
przepraszam, ale nie bardzo rozumiem. czym sa te a,b i c???

Jemasoft_

  • Gość
zapis liczb w pamieci
« Odpowiedź #13 dnia: 24 Sierpnia 2002, 01:53 »
a, b, c  to sa liczby faktycznie przechowywane w pamieci na podstawie ktorych interpreter Basica tworzy liczbe wyswietlana wg wzoru ktory podalem.
W tych pieciu bajtach jest zawarte kolejno a b c.

Slay_

  • Gość
zapis liczb w pamieci
« Odpowiedź #14 dnia: 24 Sierpnia 2002, 02:00 »
>:W tych pieciu bajtach jest zawarte kolejno a b c.

aha troche juz czaje
tylko, ze bajtow jest 5 a liczb 3
roznica 2