Najpierw poczytaj co to są liczby stałoprzecinkowe i zmiennoprzecinkowe. Takie dzielenie jak tu zostało zaprezentowane jest na liczbach stałoprzecinkowych. W takim przypadku to ty decydujesz gdzie będzie przecinek i czy w ogóle będzie. Po za tym powtórzę się za kol koodpl : po co takie rzeczy rzeźbić w asm?
x*6/10 W otrzymanej liczbie przecinek stawiasz po cyfrze dziesiątek ------ Dokładniej #define TOP_X 0xFFFF / 6 void show_pos(char* pos_str){ char buffer[6]; unsigned int x = atoi(pos_str); x = (x>TOP_X)? (x/10)*6 : (x*6)/10; i_to_str_mit_przecinken_w_srodku(buf... x); lcd_puts(buffer);...
No to właściwie się każdy nada do tego celu. Najprościej jest zapisać liczby w układzie dziesiętnym: jedna komórka pamięci jedna cyfra. Dodatkowa komórka do pamiętania znaku i jeszcze jedna do pamiętania położenia przecinka. Muszą być takie dwa zestawy dla obu wprowadzanych liczb. Przed dodawaniem i odejmowaniem przesuwasz jedną liczbę tak by przecinki...
Tak, ale co z dzieleniem wartości nieparzystych ? Rozumiem jako: co z ułamkami w wyniku po dzieleniu? Gdy długość bufora jest potęgą 2, to można w ogóle dzielenie pominąć, a wystarczy przesunąć wirtualny przecinek w odpowiednią stronę, przykładowo przetwornik daje 12 bit (0-4095), masz okno uśredniania o długości N = 8 próbek, to SUMA będzie w zakresie...
Jak podzielisz tą swoją liczbę 13845 przez 10000 to otrzymasz 13,845, ale zapisane binarnie czyli część całkowita to będzie 13, a ułamkowa już niestety nie 834 tylko na przykład 0,834*256 = 214 (dla 8-miu bitów na część ułamkową). Albo 0,834*1024 = 854 jak przyjmiesz 10 bitów na część ułamkową. Pożytek z takiej części ułamkowej żaden. Jednym słowem...
Czy są gotowe bilbioteki czy w tym przypadku muszę ręcznie wyciąć tysiące następnie wstawić przecinek i dalszy ciąg ? W gotowce wątpię ale można bardzo szybko napisać to samemu. Wystarczy dzielenie i modulo.
Dziękuję bardzo a czy macie jakiś pomysł na przecinek ? Ponieważ na przycisku ',' daję Proszę pamiętać o używaniu znaczników syntax . Opcja Listing kodu . - arnoldziq
dziel FFFFFFFFFFFFF000 przez 00000AAAAAAAAAA - ucierpi nieco dokładność, ale jest to do wykonania na 64 bitach ALU. Wynik przesuń o 6 w prawo (otrzymasz 6 miejsc binarnych po przecinku, oczywiście przesunięcia dokonujesz modyfikując cechę wyniku). Generalnie dzielenie np liczb 32 bitowych na FPU odbywa się w rzeczywistości z wykorzystaniem 96 bitów,...
Z całą pewnością nie będziemy żadną konkurencją dla Chińczyków bazując na uniwersalnych rozwiązaniach, wiedza programistyczna też będzie wtedy na podobnym poziomie albo nawet niższym. Oczywiście można sobie kpić i nazywać inne podejście "romantyzmem" czy niepotrzebną "oryginalnością", ale wtedy na końcu pozostanie już tylko nauka chińskiego. Do niedawna...
rozumiem- wtedy mi się przecinek jakby o jeden w prawo. zamaist 16,6 bedzie 166. a zamiast 255,5 ile bedzie...? dzielenia liczb 16bitowych tym bardziej nie umiem, pozatym musi to być procedurka szybka i zajmujaca mało miejsca... (w tym wypadku mam ograniczone możliwosći - ok 150bajtów)
tak Bl i Bh mogą być zmieniane --------------edit no to sprawdzmy C = (Bh - Bl) * 256 / 100 a potem: B = A * C / 256 Bh=60, Bl=50, A=50 C=(60-50)*256/100=25 /pomijam już przecinek B=50*25/256=4,88 albo robie bład albo wychodzą maliny. Mam inny plan, tylko nie potrafie znaleźć jak sie wyliczało przecinek w dzieleniu Dodano po 2 Jakoś sobie poradziłem,...
Aktualizacja o samą paczke z językiem angielskim do U8130 i w tym poście będe dodawał do następnych modeli, chociaż myśle że wystarczy abyście przetłumaczyli do U8130 a do reszty na podstawie tego się wrzuci, teraz o wiele łatwiej można tłumaczyć. A jeżeli chodzi o wkompilowanie tego później to już mój problem, wystarczy abyście wy przetłumaczyli ;)...
PRZEPRASZAM, POPEŁNIŁEM BŁĄD !!! WZÓR JEST "Vref/1023", a nie, jak pisałem odwrotnie Atmega8 żeby mierzyć napięcie musi mieć jakieś odniesienie - napięcie odniesienia czy też inaczej referencyjne. Są trzy możliwości - napięcie referencyjne to: - napięcie zasilania AVCC (około 5V) - napięcie odniesienia wewnętrzne 2,65V - napięcie referencyjne z zewnątrz,...
Ze wszystkim sobie poradziłem, obecnie mam problem z liczbami nie całkowitymi. AVR Studio + WinAVR np mam zmienną x = 10 teraz chce zapisać w zmiennej y = x/4 Wynik to oczywiście 2,5 ale jak wykonać takie dzielenie? Takie coś nie działa: unsigned int x=10; float y y = x/4; Operacja po prawej z racji "całkowitości" obu operandów dzielenia zostanie wykonana...
Jeszcze się zastanawiam, czy nie lepiej będzie zamiast Lsb i Msb odczytanej temperatury pobierać obliczoną wartość przed przecinkiem i po przecinku ? Tzn. wynik pomiaru temperatury będzie przesyłany przez RFM12 - chyba prościej będzie mieć gotowe, czyli wysyłam: Dodano po 4 Jednak coś nie tak jest. Zrobiłem to tak: Dodano po 2 Nie rozumiem. Po dwóch...
... ALE !!!!! do pliku .csv wkleja wszystko do kolumny A, a nie do trzech kolumn i wygląda to tak: E377L,40,0 E488L,252,0 A potrzebuję tak: E377L kk400 E488L kk2520 Żeby nie dzieliło przecinkiem, a wpisywało w oddzielne kolumny. Ależ przecinek w pliku CSV oddziela kolumny. Wystarczy w trakcie importu zmienić separator na "przecinek" - zaiste standardowo...
Zanim spróbuję odpowiedzieć, to napiszę coś, co nie jest w zamierzeniu czepianiem się. Otóż staraj się nie pisać "ciurkiem", za to staraj się stosować znaki przestankowe, takie jak np. przecinek lub kropka, czyli dziel tekst na poszczególne zdania Twój post jest miejscami mało zrozumiały i dlatego może być zignorowany Zakładam, że chodzi o obudowę komputerową...
Dokładnie tak. Kompilator wykonuje dzieleni całkowite, stąd problem. Swoją drogą, po co ładować float i specjalną wersję sprintf dla tak prostej czynności? Nie prościej pomnożyć result*1000 i podzielić przez 8192, wykonując operację na liczbach całkowitych? Na koniec tylko odpowiednio wyświetlić przecinek i cała operacja jest o jakieś 7kB krótsza i...
Otrzymane 2 bajty łączę w liczbę 16 bitową. Mnożę ją przez 10 i dzielę przez 16 (tj. przesuwam o 4 bity w prawo). Mam w wyniku temperaturę 10x większą niż w rzeczywistości. Ewentualne obliczenia i ustawienia wewnątrz programu robię na liczbach 10x większych. Dla procesora to żadna różnica. Wyświetlaniem zaś zajmuje się za każdym razem ten sam podprogram,...
Nawet nie trzeba dzielic A/10000 wystarczy na lcd przesunac przecinek, albo pamiętać że wyniki mamy 10^4 większy. Aha sa instrukcje w tym kontrolerze do mnożenia 16-bit?
Błędy były gdzieś w procedurze wyświetlania. Wyrzuciłem ją i tak jak radził BlueDraco wyświetlam przecinek między ostatnimi liczbami. A wartość mnożę i dzielę przez 10.
Można to zoptymalizować i nie przeliczać na Volty w ogóle, ale tak bedzie prościej zobrazować. Jeśli napięciem odniesienia jest AVCC to znaczy że 5V trzeba teoretycznie podzielić przez rozdzielczośc 1024 i wyjdzie 0.00488 no i to się często zaokrągla do 0.0049 Teraz żeby odczytać napięcie wystarczy pomnożyć odczytany wynik przez te 0.0049, ale to wymusza...
witam juz wszystko jasne, faktycznie pytanie bylo troche bez sensu. O ile sie nie myle, sparawa wyglada tak: - jezeli chcemy syganl przeslac wiekszej lub mniejszej dokladnosci wystarczy tylko przesunac przecinek w prawo lub w lewo a co za tym idzie sygnal musimy pomnozyc lub podzielic o dana liczbe bitow. (przykladowo jesli przesuwamy przecinek o 2...
Twój kod zapisuje, dzieląc średnikiem. Nie jest to kwestia kodu, a ustawień systemu, gdyż jak wiadomo, w Polsce przecinek jest separatorem dziesiętnym, stąd użyty jest średnik.
a) a jak chcesz cokolwiek zrobić żeby pominąć przecinek b) jeśli odpowiesz że po wykonaniu obliczeń chcesz pominąć za przecinkiem to dlaczego nie dzielić przez 1000h, i do czego taka dokładność??
Jeżeli w sterowniku masz liczbę całkowitą to zamiana na liczbę zmiennoprzecinkową nic ci nie da bo zamiast 20 otrzymasz 20,0 a z 21 otrzymasz 21,0. Co to za poprawa ? Chyba że dla 21 ktoś w sterowniku wpisał 210 a dla 21,5 wpisał 215. Wtedy na SCADZIE albo przesuwasz przecinek albo zamieniasz na float i dzielisz przez 10. Chyba że źle ciebie rozumiem...
NIe mam przed sobą pdf'a DS18B20 ale z tego co pamiętam wyglądało to tak: odczytujesz dwa bajty z czujnika LSB i MSB. Z pierwszego bierzesz 4 starsze bity (czyli 4 młodsze pomijasz), przesuwasz o 4 miejsca w prawo i dodajesz do całości drugi bit. Nie wiem jak to będzie wyglądać w BASCOMIE ale powinieneś dać sobie radę. W tych wszystkich obliczeniach...
Takie pisanie programu przy pomocy CASE`ów moim zdaniem woła o pomstę do nieba. Program jest napisany niechlujnie i nieczytelnie. Wiem że pewnie Tobie jest to obojętne, ale dzięki temu łatwo zrobić błąd. 1. NIE baw się w takie pokręcone CASE, wystarczy przecież stablicować napisy a potem zrobić wywołanie printf("%s ",tablica case 9: printf("dziewietnascie...
Pytanie było o C++ a nie ansi C to po pierwsze. Po drugie nie uzyskasz takim dzieleniem żadnej liczby z przecinkiem bo wynik jest typu int i kompilator zrzutuje wynik dziąłania w górę na int. Widzę, że zrozumienie działania kodu trochę przerosło przedmówcę. Ale niech będzie, to samo w C++: int dzielna, dzielnik; int wynik_skalowany; wynik_skalowany...
Witam Piszę program, w którym zliczam impulsy z Timera0 (ATmega8). Ilość tych impulsów jest następnie dzielona przed określoną liczbę. Jak mozna się domyślić czasem wartość wynikowa będzie ułamkiem czyli pojawi się przecinek. Problem w tym, że nie mogę ustawić zmiennej wynikowej jako liczby z przecinkiem. Dim N As Byte N = Tcnt0 / 36 N = N * 60 W takim...
a nie mówiłem...drugi zajmie jeszcze więcej :) Drugi pomysł używałem na Atmega16, lecz nie wywoływałem fprintf_P(); tylko kilka razy. Jeśli wiesz jak będzie wyglądał wynik tzn ile będzie miał miejsc po przecinku i w sumie ile cyfr to zawsze możesz użyć pomysłu kolegi: elektronik12z Możesz też bawić się w dzielenie, mnożenie, odejmowanie i modulo (czyli...
zaimportuj porządnie ten plik do excela. uruchom Excela, naciśnij "otwórz plik" wskaż na ten plik, ale pamiętaj, że musisz wybrać typ pliku jako "plik tekstowy (*.txt *.csv *.tsv). Dopiero wtedy otworzy Ci się filtr, w którym możesz poustawiać jak i gdzie dzielić na kolumny. Dodatkowym problemem będzie kropka w liczbach. najlepiej chyba będzie jak sobie...
nie wiem co masz na myśli że podając km to zapisuje się w zmienną w metrach Chodzi o to, że zapis zmiennoprzecinkowy ma swoje problemy (przykładowo, float 0.1 + float 0.2 nie jest równy float 0.3). W takich małych układach jest przede wszystkim bardzo kosztowny (obliczeniowo) - a przy tym zupełnie zbędny. Bo nigdy nie osiągniesz precyzji 0.0000001...
1. Bardzo fajna konstrukcja, mam tylko wątpliwości co do sposobu przedstawiania wartości na wyświetlaczu (górny wiersz) - rozumiem, że te kropki w zamyśle pewnie miały oddzielać grupy trzycyfrowe - na filmiku w jednej liczbie są pokazane dwie kropki - i nie wiadomo gdzie jest "przecinek dziesiętny" - część całkowita i ułamkowa. To jest mylące... Może...
Nie znam się na Arduino ale normalnie zmienne float dla 8 bitowców to zdecydowanie NIE!!! Lepiej jest operować na zmiennych całkowitych (np: int long) a tylko na końcu wyświetlać kropkę czy tam przecinek tam gdzie trzeba. Generalnie to powinieneś w przerwaniu zwiększać wartość o 15 jeśli już taką liczbę przyjąłeś lub 150 bez żadnego dzielenia. Funkcje...
Wz = 31,5-((255-n)/2) wystarczy pomnożyć przez 10 10Wz = 315 - ((255-n)*5) Teraz masz już całkowite. Przecinek wstawiasz podczas wyświetlania na LCD. Ustawiasz kursor na pozycji drugiej, wyświetlasz liczbę - w twoim przypadku 10x większą. Teraz dzielisz liczbę przez 10 tak aby wynik zawierał liczbę pełnych dziesiątek (bez części ułamkowej), ustawiasz...
A nie prościej mnożyć niż dzielić i to jeszcze z przecinkiem. aby otrzymać 18800 = 0x4970h / 0x02F0h = 0x19h I teraz: 0x02F0h x 0x19h = 0x4970h = 18800 0x02F1h x 0x19h = 0x4989h = 18825 0x02F2h x 0x19h = 0x49A2h = 18850 0x02F3h x 0x19h = 0x49BBh = 18875 Lepiej operować na liczbach całkowitych, szczególnie w C. Przecinek wyświetlić to nie problem. Tym...
Ok. Spróbuje jeszcze bez włączania zmiennego przecinka makefile. Nie jest mi potrzebny zmienny przecinek. Tak tylko pomyślałem, że może skorzystam z tego ale nie sądziłem, ze aż tyle pamięci to wszytko zużywa. Dopiero po zainstalowaniu najnowszego WINAVR zauważyłem ile faktycznie przekroczyłem zakres (i po stworzeniu nowego pliku Makefile w nowej wersji)....
ten przedział (0,1) można zrobić w ten sposób: short a/short b, gdzie a<b i nie dzielić tego bo według mojej wiedzy (może być bardzo wybrakowana [wiedza]) wyjdzie 0 więc zamiast dzielenia ten mniejszy short mnożę sobie przez kolejna liczbę i wynik mam na dwóch shortach, a później dzielę przez tego większego shorta i znów wracam rozmiarem do pojedynczego...
Takie głupie pytanie: jakiego typu jest v_temp? Przy obliczeniach jest automatyczne rzutowanie na float i spowrotem do całkowitych po obliczeniach? Co do przesuwania wyników to już ktoś wcześniej zwracał uwagę że indeksy tablicy lecą od 0 a nie od 1 i tymczasem tylko to mogę podejrzewać. Wyświetlanie liczb z przecinkiem można zrobić prosto, nawet na...
Witam, Proponuję spróbować tego, to kawałek kodu z mojego pliku pomocy w obsłudze termometru DS18B20: 'Odczyt temperatury z dokladnością do dziesiątych części $regfile = "89s8252.dat" $crystal = 12000000 Dim Odczyt(2) As Byte 'deklaracja dwóch zmiennych typu byte do których będą zapisywane dane z termometru Dim T As Integer , Przecinek...
Ok, ale jak dostosowujesz wyświetlany wynik do rzeczywistości? Sygnał nie jest dzielony przez 10 czy 100 że wystarczy przesunąć kropkę, po podziale przez 32 miernik będzie pokazywał głupoty. Nie potrzeba tu oczywiście żadnego mnożenia wyniku. Wystarczy właściwie dobrać czas bramkowania. Przykładowo mamy przebieg mierzony o częstotliwości 100MHz. Przy...
definiujesz sobie bufor jako ciąg znaków string który z miejsca jest wypełniony znakami (masz już tam swój przecinek unsigned char buffer[]="00,000"; teraz wyznaczasz resztę z dzielenia przez 10 wpisujesz w odpowiednie miejsce bufora i dzielisz swoją wartość przez 10 i zapamiętujesz w zmiennej, Operację tę powtarzasz dotąd aż wartość...
Napisałam prosty kalkulator w Microsoft Visual Basic. Niestety nie znam funkcji bo tworzyłam go już z gotowego tutoriala:( proszę o pomoc w nazwach poszczególnych funkcji oto kod. Dodatkowo w załączniku zamieszczam mój kalkulator. Niestety mam też problem w tym, że nie czyta on podwójnych znaków, nie działa przecinek i dzieli przez zero :( nie wiem...
Zgadzam się że może być przydatne trzymanie liczb skalowanych jakąś potęgą 2 itd... I tak się w praktyce robi gdy obliczenia na float-ach są za wolne (zarówno softowo jak i czasem również hardware-owe operacje na float-ach mogą być za wolne). Zapoznaj się z formatami Q. Idea jest znana, ale w zaskakująco innej dziedzinie: Biznes: liczby ułamkowe stałoprzecinkowe....
Ten opis chyba nie jest dobry. Google wyrzuca Twój wątek na wss.pl, z przykładem kodu autorstwa djroman ale to chyba też nie do końca poprawnie. Szczególnie to D-miejsce kropki dziesiętnej/miejsce+ostatnia cyfra z wartością 0F mi nie pasuje. Czy dysponujesz opisem formatu używanego przez wagę? Jeżeli nie masz dokumentacji formatu zbierz więcej próbek...
jak najprościej wykonać obliczenie zmiennoprzecinkowe (z dzieleniem) na liczbach uint8_t, tak aby wynikiem także była liczba uint8_t? Wcale nie musisz wykonywać dzielenia na zmiennoprzecinkowych :wink: wystarczy że zrobisz np: tak: uint8_t a; uint16_t b; b=(20*10)/3; b*=10; a = b/10; Zasada jest taka żeby "przesunąć" przecinek z ilorazu w prawo...
Histereza jest źle tak nie powinno być, to błąd, nie możesz dodawać do integer liczby z przecinkiem. [syntax=basic4gl]If Plus = 0 Then Temp_odc = Temp_odc + 0.1[/syntax] zmienna Temp_odc jest typu integer i nie jest zmienną zmiennoprzecinkową. Pomyliłeś się, bo to działanie [syntax=basic4gl]Temperatura = Temperatura * 10 ' mnozymy 10 Shift Temperatura...
Mam problem z uśrednieniem wyniku z przetwornika ADC. Nabazgrałem cos ale nie do końca to działa. Chcę z czytywać 10 ostatnich wyników i wyciągnąć z nich średnią arytmetyczną, wysłać do LCD na pierwsza linie. Następnie ten uśredniony wynik będzie dzielony przez 6 i mnożony przez 100 i wysłany do LCD na druga linie. Mam też problem z funkcją zaokrąglania...
Oversampling - ilość próbek jest większa od dzielnika (zwiększa rozdzielczość) Średnia arytmetyczna - dzielnik jest równy ilości próbek. (nie zmienia rozdzielczości) Wszelkie znaki na niebie i ziemi mówią, że "In signal processing, oversampling is the process of sampling a signal with a sampling frequency significantly higher than the Nyquist rate."...
ds18b20 przecinek wyświetlać przecinek przecinek kropka
programowanie satel perfecta termistor zamiast potencjometr edycja gerbera
dedra opinie toshiba 43ua2063dg
Naprawa potencjometru ALPS w Sony STR-GX70ES Wpływ instalacji fotowoltaicznych na sieć niskiego napięcia