=?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

Poprzedni Następny
Wiadomość
Spis treści
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/

Poprzedni Następny
Wiadomość
Spis treści
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;)

Poprzedni Następny
Wiadomość
Spis treści
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



Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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/

Poprzedni Następny
Wiadomość
Spis treści
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.

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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/

Poprzedni Następny
Wiadomość
Spis treści
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/


Poprzedni Następny
Wiadomość
Spis treści
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/

Poprzedni Następny
Wiadomość
Spis treści
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



Poprzedni Następny
Wiadomość
Spis treści
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/

Poprzedni Następny
Wiadomość
Spis treści
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/