=?ISO-8859-2?Q?Zamiana_liczby_2-bajtowej_un?= =?ISO-8859-2?Q?sign_na_5_niezale=BFnych_cyfr=3F?=
Masz problem? Zapytaj na forum elektroda.pl
From: "Robert R" <czernkow_at_nospam_gazeta.SKASUJ-TO.pl>
Subject: =?ISO-8859-2?Q?Zamiana_liczby_2-bajtowej_un?= =?ISO-8859-2?Q?sign_na_5_niezale=BFnych_cyfr=3F?=
Date: Tue, 2 Aug 2005 07:41:32 +0000 (UTC)
Jak najprościej można to zrobić? Pozdrawiam.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
From: "T.M.F." <tfrancuz_at_nospam_nospam-mp.pl>
Subject: =?ISO-8859-2?Q?Re=3A_Zamiana_liczby_2-bajtowej_unsign_?=
Date: Tue, 02 Aug 2005 12:19:53 +0200
Robert R wrote:
Jak najprościej można to zrobić? Pozdrawiam.
Cyfr dziesietnych? To dzielic przez 10 i masz, chyba, ze od poczatku
robisz arytmetyke w BCD. Jak na hex to wogole nie ma problemu;)
From: "Roman" <romantek_at_nospam_poczta.onet.pl>
Subject: =?iso-8859-2?Q?Re:_Zamiana_liczby_2-bajtowej_unsign_na_5_niezale=BFnych_c?=
Date: Tue, 2 Aug 2005 12:26:17 +0200
Jak najprościej można to zrobić? Pozdrawiam.
W czterech krokach:
1. wyjściową liczbę dzielisz przez 10000. (dziesiętne), wynik to najstarsza
cyfra, reszta...
2. poprzednią resztę dzielisz przez 1000. wynik to druga starsza cyfra,
reszta...
3. poprzednią resztę dzielisz przez 100. wynik to trzecia starsza cyfra,
reszta...
4. poprzednią resztę dzielisz przez 10. wynik to przedostatnia cyfra, a
reszta to ostatnia cyfra - jedności.
Jeśli nie masz rozkazu dzielenia, to zamiast tego robisz odejmowania
dzielnika (za każdym razem od 0 do 9 sztuk - jest to jednocześnie wynik
takiego emulowanego dzielenia).
Jeśli nie masz rozkazu odejmowania dwubajtowego rozbijasz go na dwa
odejmowania jednobajtowe z pożyczką.
Powodzenia
Roman
From: Albert Bartoszko <albertb_at_nospam_nt.kegel.com.pl>
Subject: =?ISO-8859-2?Q?Re=3A_Zamiana_liczby_2-bajtowej_unsign_?=
Date: Tue, 02 Aug 2005 14:13:09 +0200
Użytkownik Robert R napisał:
Jak najprościej można to zrobić? Pozdrawiam.
W pamięci?
Kalkulatorem Windows?
Może napisz coś więcej?
Albert
From: "Robert R" <czernkow_at_nospam_WYTNIJ.gazeta.pl>
Subject: =?ISO-8859-2?Q?Re:_Zamiana_liczby_2-bajtowej_?= =?ISO-8859-2?Q?unsign_na_5_niezale=BFnych_cyfr=3F?=
Date: Wed, 3 Aug 2005 11:35:34 +0000 (UTC)
Albert Bartoszko <albertb_at_nospam_nt.kegel.com.pl> napisał(a):
Użytkownik Robert R napisał:
Jak najprościej można to zrobić? Pozdrawiam.
W pamięci?
Kalkulatorem Windows?
Może napisz coś więcej?
Albert
dokładnie chodzi mi o wyświetlenie liczby 2-bajtowej (bascom - word) na 5
wyświetlaczach led. Program pisany będzie w bascomie.W jaki sposób mogę
otrzymać interesującą mnie cyfrę + oddzielnie resztę którą mogę dalej dzielić?
Dzielę np.65000 przez np.10000
Interesującą cyfrę wyciągam przez zaokrąglenie iloczynu (6)Następnie Uzyskaną
cyfrę (6) mnożę przez poprzedni dzielnik (60000) i odejmuję od liczby
wyjściowej 65000 - 60000 = 5000. itd.CZy można prościej?
Pozdrawiam, dzięki.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: =?ISO-8859-2?Q?Re=3A_Zamiana_liczby_2-bajtowej_unsign_?=
Date: Thu, 04 Aug 2005 00:16:08 +0200
Robert R wrote:
dokładnie chodzi mi o wyświetlenie liczby 2-bajtowej (bascom - word) na 5
wyświetlaczach led. Program pisany będzie w bascomie.
A czy w BASCOMie nie ma odpowiednika funkcji sprintf albo itoa, znanych
z jezyka C?
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.
From: Albert Bartoszko <albertb_at_nospam_nt.kegel.com.pl>
Subject: =?ISO-8859-2?Q?Re=3A_Zamiana_liczby_2-bajtowej_unsign_?=
Date: Thu, 04 Aug 2005 08:49:57 +0200
Użytkownik Robert R napisał:
Albert Bartoszko <albertb_at_nospam_nt.kegel.com.pl> napisał(a):
Użytkownik Robert R napisał:
Jak najprościej można to zrobić? Pozdrawiam.
W pamięci?
Kalkulatorem Windows?
Może napisz coś więcej?
Albert
dokładnie chodzi mi o wyświetlenie liczby 2-bajtowej (bascom - word) na 5
wyświetlaczach led. Program pisany będzie w bascomie.W jaki sposób mogę
otrzymać interesującą mnie cyfrę + oddzielnie resztę którą mogę dalej dzielić?
Dzielę np.65000 przez np.10000
Interesującą cyfrę wyciągam przez zaokrąglenie iloczynu (6)Następnie Uzyskaną
cyfrę (6) mnożę przez poprzedni dzielnik (60000) i odejmuję od liczby
wyjściowej 65000 - 60000 = 5000. itd.CZy można prościej?
Pozdrawiam, dzięki.
Matematycznie - raczej nie.
Natomiast procesory i języki ich programowania
inne niż assembler narzucają swoje ograniczenia.
Jeśli masz więc narzucony język programowania
to po pierwsze możesz poszukać czy nie mają gotowych
funkcji co już Ci Adam sugerował.
Dalej liczenie na procesorze różni się od
matematyki więc możesz optymalizować sposób
wykonywania działań.
W twoim przykładzie zamiast dzielenia zmiennoprzecinkowego
i zaokrąglania dać dzielenie całkowite i resztę z dzielenia,
jeśli użyty język ma takie możliwości.
W zależności od procesora możesz zmienić algorytm.
Tu już zależy jakimi typami danych dysponuje procesor,
czy ma sprzętowe dzielenie i mnożenie, oraz rozpatrywanym
wypadku dość ciekawe możliwości dają
rozkazy dodawania lub korekcji dziesiętnej wyniku.
Ale to już raczej assembler niż Bascom ;-)
Albert
From: "Robert R" <czernkow_at_nospam_WYTNIJ.gazeta.pl>
Subject: =?ISO-8859-2?Q?Re:_Zamiana_liczby_2-bajtowej_?= =?ISO-8859-2?Q?unsign_na_5_niezale=BFnych_cyfr=3F?=
Date: Thu, 4 Aug 2005 11:25:16 +0000 (UTC)
W twoim przykładzie zamiast dzielenia zmiennoprzecinkowego
i zaokrąglania dać dzielenie całkowite i resztę z dzielenia,
Język programowania może być w zasadzie dowolny.W bascomie napisałem
najwięcej programów C - tylko teoretycznie przeglądanie i analiza źródeł.
No właśnie w jaki sposób uzyskać tę resztę z dzielenia całkowitego? Pewnie
kryje się w jakimś rejestrze?
Może Ktoś podrzuci mi kawałek kodu. Faktycznie szkoda ramu na dzielenie
zmiennoprzecinkowe.
Pozdrawiam.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
From: Gregor <pij_at_nospam_wiecej.piwa.a.nie.spamuj.pl>
Subject: =?ISO-8859-2?Q?Re=3A=20Zamiana=20liczby=202=2Dbajtowej=20=20unsign=20na=205=20?= =?ISO-8859-2?Q?niezale=BFnych=20cyfr=3F?=
Date: Thu, 04 Aug 2005 22:13:20 +0000
"Robert R" napisal:
No właśnie w jaki sposób uzyskać tę resztę z dzielenia całkowitego? Pewnie
kryje się w jakimś rejestrze?
A nie masz w bascomie operatora modulo? W C jest to AFAIR znak %.
Ewentualnie zamiast dzielenia uzyj odejmowania - odejmuj zaczynajac od najwiekszej
potegi 10 (u ciebie 10000) inkrementujac pierwsza cyferke, jak to co zostanie bedzie
mniejsze od 10000 przestaw sie na 1000 i nastepna cferke i tak dalej az do jednosci.
Algorytm jest typu "wiem ze to nieefektywne ale nie chce mi sie myslec" ale
jest banalna w impelementacji w dowolnym jezyku programowania i zadziala
na praktycznie kazdym procku :)
GRG
--
Tutaj sygnatura Grzegorza Domagały - jeśli chcesz wysłać do niego wiadomość
pisz pod adres grzegorz.domagata_at_nospam_chello.at i nie zapomnij dodać
"kielbaska dla cerbera" w treści albo Cerber zeżre twój list...
Strona domowa: http://members.chello.at/grzegorz.domagata/
From: "Piotrek Sz." <zumek_at_nospam_WYTNIJ.gazeta.pl>
Subject: =?ISO-8859-2?Q?Re:_Zamiana_liczby_2-bajtowej_?= =?ISO-8859-2?Q?unsign_na_5_niezale=BFnych_cyfr=3F?=
Date: Thu, 4 Aug 2005 19:00:34 +0000 (UTC)
Robert R <czernkow_at_nospam_gazeta.SKASUJ-TO.pl> napisał(a):
Jak najprościej można to zrobić? Pozdrawiam.
Najprościej to zerknąć do Helpa , ale jak Ci się nie chce ;-) to proszę:
Co to za typ zmiennej unsign(ed ?) - word ?
Jeśli WORD to można ...
Dim Cyfryascii As String * 5 , Liczba As Word
Liczba = 65535
Cyfryascii = Str(liczba)
..
Teraz odczytujesz 1 znak z ciągu i odejmujesz 48(&H30) .
Są też pewnie inne sposoby ;)
Pozdrawiam
Piotrek
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
From: "Greg\(G.Kasprowicz\)" <gkasprow_at_nospam_gmail.com>
Subject: Re: Zamiana liczby 2-bajtowej unsign na 5 niezależnych cyfr?
Date: Thu, 4 Aug 2005 23:06:58 +0200
..
Teraz odczytujesz 1 znak z ciągu i odejmujesz 48(&H30) .
Są też pewnie inne sposoby ;)
tylze ze wyjdzie to jako hex + krzaczki
From: "Piotrek Sz." <zumek_at_nospam_WYTNIJ.gazeta.pl>
Subject: =?ISO-8859-2?Q?Re:_Zamiana_liczby_2-bajtowej_?= =?ISO-8859-2?Q?unsign_na_5_niezale=BFnych_cyfr=3F?=
Date: Fri, 5 Aug 2005 08:03:28 +0000 (UTC)
Greg\(G.Kasprowicz\) <gkasprow_at_nospam_gmail.com> napisał(a):
tylze ze wyjdzie to jako hex + krzaczki
Ja tak robię i nie mam żadnych krzaczków ;)
Oto 2 przykłady:
$regfile = "m8def.dat"
$crystal = 1000000
Dim Cc(1)as Byte At 96 , Cyfryascii As String * 5 At 97
Dim Y As String * 1 , X As Byte , Z As Byte
Dim Liczba As Word
Liczba = 65432
Cyfryascii = Str(liczba)
'pierwszy LEGALNY sposób
For X = 1 To Len(cyfryascii)
Y = Mid(cyfryascii , X , 1)
Z = Asc(y) - 48 'w zmiennej Z mamy kolejno dziesiątki tysięcy,jedności
tysięcy
'setki,dziesiątki,jedności
Next X
Cyfryascii = Str(liczba)
'drugi "MNIEJLEGALNY" sposób , ale także mniej PAMIĘCIOŻERNY
For X = 2 To 6
Cc(x) = Cc(x) And &H0F
Next
'w tablicy Cc(2) do Cc(6) mamy kolejno dziesiątki tysięcy,jedności tysięcy
'setki,dziesiątki,jedności
I gwarantuję Ci , że to nie są ani HEX-y ani krzaczki ;-)
Można sprawdić nawet w symulatorze , obserwując pamięć RAM.
Pozdrawiam
Piotrek
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
From: "Robert R" <czernkow_at_nospam_WYTNIJ.gazeta.pl>
Subject: =?ISO-8859-2?Q?Re:_Zamiana_liczby_2-bajtowej_?= =?ISO-8859-2?Q?unsign_na_5_niezale=BFnych_cyfr=3F?=
Date: Fri, 5 Aug 2005 12:52:48 +0000 (UTC)
Wielkie dzięki - pomysł z zamianą zmiennej word na stringa b.dobry.Pozdrawiam.
Oto 2 przykłady:
$regfile = "m8def.dat"
$crystal = 1000000
Dim Cc(1)as Byte At 96 , Cyfryascii As String * 5 At 97
Dim Y As String * 1 , X As Byte , Z As Byte
Dim Liczba As Word
Liczba = 65432
Cyfryascii = Str(liczba)
'pierwszy LEGALNY sposób
For X = 1 To Len(cyfryascii)
Y = Mid(cyfryascii , X , 1)
Z = Asc(y) - 48 'w zmiennej Z mamy kolejno dziesiątki tysięcy,jedności
tysięcy
'setki,dziesiątki,jedności
Next X
Cyfryascii = Str(liczba)
'drugi "MNIEJLEGALNY" sposób , ale także mniej PAMIĘCIOŻERNY
For X = 2 To 6
Cc(x) = Cc(x) And &H0F
Next
'w tablicy Cc(2) do Cc(6) mamy kolejno dziesiątki tysięcy,jedności tysięcy
'setki,dziesiątki,jedności
I gwarantuję Ci , że to nie są ani HEX-y ani krzaczki ;-)
Można sprawdić nawet w symulatorze , obserwując pamięć RAM.
Pozdrawiam
Piotrek
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/