<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=1595&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-09-26T12:00:48+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1595&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-09-26T12:00:48+01:00</updated>
<published>2012-09-26T12:00:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15979#p15979</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15979#p15979"/>
<title type="html"><![CDATA[Re: Promocja, problemy z obliczeniami - prośba o wytłumaczen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15979#p15979"><![CDATA[
a przy okazji tej dyskusji podpowiedziałeś wielu osobom jak w prosty sposób dla &quot;leniwych&quot; robić że tak powiem krótsze rzutowanie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> już tłumaczę co mam na myśli <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> (to tak troszkę pół żartem pół serio ale fakt faktem że sam nieraz tak robię) hahaha<br /><br />(uint32_t) - tu musimy wklepać aż 10 znaków z klawiatury - męczarnia<br /><br />1UL* - tu możemy wklepać TYLKO 4 znaki z klawiatury - uuuuuf <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> jak przyjemnie<br /><br />jak widać sam zaliczam się do tych &quot;leniwych&quot; żeby nikt nie pomyślał że kogoś chciałem tu urazić <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />w związku z ciekawymi pytaniami podlinkuję te tematy do strony na atnelu o promocji do int16 <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 wrz 2012, o 12:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-09-26T11:46:13+01:00</updated>
<published>2012-09-26T11:46:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15975#p15975</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15975#p15975"/>
<title type="html"><![CDATA[Re: Promocja, problemy z obliczeniami - prośba o wytłumaczen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15975#p15975"><![CDATA[
Kolejność obliczeń jak zauważył wyżej Malutki_27 to jedna i bardzo ważna rzecz. Ale niezrozumienie tego zagadnienia bierze się tutaj z jednej prostej przyczyny.<br /><br />Dokąd nie przestawisz się na myślenie o rozpatrywaniu w C każdej najmniejszej operacji jako .... uwaga! .... WYRAŻENIA dotąd będziesz miał kłopoty z tym.<br /><br />bo co to jest?<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">pulse*weg</div><br /><br />????<br /><br />to jest wyrażenie <br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">(pulse*weg)</div><br /><br />tak na prawdę składa się ono z dwóch mniejszych wyrażeń<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">(pulse) * (weg)</div><br /><br />a całe działanie to mnożenie wyniku tych dwóch wyrażeń czyli<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">( (pulse) * (weg) )</div><br /><br />jak spojrzymy na to przez ten pryzmat to chyba nie trudno zauważyć, że jeśli dodamy kolejną zmienną<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">pulse*weg*dist</div><br /><br />to będziemy mieli - no właśnie ile wyrażeń ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> zagadka<br /><br />pokażę to nawiasami:<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />( <strong><span style="color: #FF0000">(</span></strong>(pulse)*(weg)<strong><span style="color: #FF0000">)</span></strong> * (dist) )<br /></div><br /><br />no i co ? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> to chyba logiczne zgodnie z kolejnością działań rozpatrujemy wartości każdego wyrażenia i to dokładnie będzie miało odzwierciedlenie w kodzie asemblera. Czyli ja tu widzę konieczność wyliczenia 5 wyrażeń - zgadza się?<br /><br />w związku z tym jeśli mamy działanie teraz z dzieleniem<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">(pulse*weg*dist) / (pulse*1000UL)</div><br /><br />to czy nie zaczyna już być to jasne jak drut ? po co się zastanawiać czy trzeba pisać<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">pulse*1000UL </div><br /><br />czy może<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">1000UL*pulse</div><br /><br />toż to nie będzie miało ŻADNEGO znaczenia w związku z tym co napisałem wyżej.<br /><br />odnośnie ostatniego stwierdzenia że w działaniu <br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">Dist += ((WEG*wheel) / pulses);</div><br /><br />nie działa rzekomo wstawienie hmmm poprawnie mówiąc wykonanie rzutowania do typu uint32_t - jest nieprawdą. Coś ci może się już pomyliło w trakcie tych prób. Nie mam akurat teraz pod ręką zestawu uruchomieniowego więc musiałem skorzystać z &quot;obrzydliwego&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> symulatora pod AS6 .... więc proszę bardzo - najpierw bez żadnego rzutowania i zły wynik - zgadza się ? spójrzmy:<br /><br /><img src="http://forum.atnel.pl/_obrazki/o/54_e13ac268b70b187da7b1ac8f4adea82a.jpg" alt="Obrazek" /><br /><br />a teraz po kolei dwa rodzaje rzutowania jedno z użyciem 1UL a drugie z użyciem (uint32_t)<br /><br /><img src="http://forum.atnel.pl/_obrazki/o/54_613ac247953ce9b3060101ef6da8822c.jpg" alt="Obrazek" /><img src="http://forum.atnel.pl/_obrazki/o/54_5fe33325753f45cb91258a0807ef3200.jpg" alt="Obrazek" /><br /><br />i jak widać wartość na końcu obliczona jest taka sama<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />reasumując - jeśli mnożymy 3 liczby<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">32UL * pulse * dist</div><br /><br />w taki sposób, to na podstawie powyższych rozważań pierwsze wyrażenie z uwagi na użyte rzutowanie już będzie miało wynik uint32_t dlatego mnożenie *dist już także będzie promowane do uint32_t<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 wrz 2012, o 11:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2012-09-26T09:05:50+01:00</updated>
<published>2012-09-26T09:05:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15966#p15966</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15966#p15966"/>
<title type="html"><![CDATA[Re: Promocja, problemy z obliczeniami - prośba o wytłumaczen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15966#p15966"><![CDATA[
<div class="quotetitle">robiw napisał(a):</div><div class="quotecontent"><br />Rzeczywiście kolejność może mieć znaczenie, ale według artykułu Mirka:<br /><br />&quot;Ale z powyższych wyjaśnień pewnie już rozumiesz, że dodawanie do każdej nie jest konieczne ponieważ <strong>wystarczy aby jedna składowa wyrażenia posiadały typ większy od domyślnego 16-bitowego i od razu kompilator zrezygnuje z domyślnej promocji do int.</strong>&quot;<br /></div><br />Wydaje mi się że przykład jest troszkę nie fortunny dlatego że mnożenie nadal jest w zakresie int16 stąd ten problem nie wynikł <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Zresztą jak Mirek sie pojawi napewno nie omieszka zabrać głos w tej sprawie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />A z cytatu którego użyłeś wynika tylko tyle że nie wszytskie wartości muszą być rzutowane, i do prawidłowych obliczeń wystarczy że będzie miała tylko jedna <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><br /><div class="quotetitle">robiw napisał(a):</div><div class="quotecontent"><br />Zastanawiam się w takim razie czy &quot;pod kreską&quot; zostawić w takim razie również (1000UL*pulses) czy już wtedy <strong>wystarczy, że tylko w liczniku tego wyrażenia jest promocja do UL</strong>. No i swoją drogą zastanawiam się także czemu rzutowanie do (uint32_t) tego nie załatwia tak samo...robiw<br /></div><br /><br />Powinieneś uzyć (1000UL*pulses), ponieważ kładnia się kolejność obliczeń. Najpierw w nawiasach, czyli nadal byś operował na uint8_t, a wynik działania przekracza ten typ <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Zresztą przy dwóch zmiennych nie powinno mieć to znaczenia, ważne tylko aby wynik mieścił się w zadeklarowanym typie danych <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=225">Malutki_27</a> — 26 wrz 2012, o 09:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2012-09-26T08:37:53+01:00</updated>
<published>2012-09-26T08:37:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15964#p15964</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15964#p15964"/>
<title type="html"><![CDATA[Re: Promocja, problemy z obliczeniami - prośba o wytłumaczen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15964#p15964"><![CDATA[
Bo może obliczenia są robione on lewej do prawej i rzutowanie do 32bit nastepuje końcu.<br />Natomiast w drugim przypadku od razu operujesz na zmiennej 32bit<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />w drugim przypadku kłania się kolejność obliczeń matematycznych <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=225">Malutki_27</a> — 26 wrz 2012, o 08:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2012-09-26T08:22:54+01:00</updated>
<published>2012-09-26T08:22:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15962#p15962</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15962#p15962"/>
<title type="html"><![CDATA[Re: Promocja, problemy z obliczeniami - prośba o wytłumaczen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1595&amp;p=15962#p15962"><![CDATA[
Z tym tematem <!-- m --><a class="postlink" href="http://atnel.pl/domyslna-promocja-do-typu-int.html" >http://atnel.pl/domyslna-promocja-do-typu-int.html</a><!-- m --> się kolega zapoznał???<p>Statystyki: Napisane przez Gość — 26 wrz 2012, o 08:22</p><hr />
]]></content>
</entry>
</feed>