English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés
Σ: 1 post

TCH  (statz) Főfasz
#1, Főfasz (10443)
2149 | #2f25 | ^ | Idézet | Wed, 03 Dec 2014 01:17:44 +01
46.139.*.* Linux x86 Opera Classic Hungary *.catv.pool.telekom.hu
A PNG konverter írása közben optimalizálgatok és felmerült egy ilyen kódrészlet:
if (++x == p->width)
{
	x = -1;
}
A defilterelésnél van az, hogy minden scanline-t megelőz a filter típusának byte-ja, vagyis minden sorban van egy "-1-edik pixel", de ez most mindegy... Én ezt az if-et úgy hajítottam ki, hogy
x = (~(++x == p->width) + 1) | x;
Magyarázata a következő:
Amennyiben elértük a szélességet, úgy ++x == p->width 1-et fog visszaadni, aminek a negálása -2-őt fog eredményezni, amihez 1-et hozzáadva -1-et fogunk kapni, amit bármivel hozunk VAGY kapcsolatba, ugyanúgy -1-et kapunk, tehát az igaz ág kiegyszerűsítve, ha ++x == p->width, akkor x -1 lesz.
Ha x kisebb, mint a szélesség, úgy ++x == p->width 0-át fog visszaadni, amit ha negálok, -1-et kapok, ahhoz egyet hozzáadva ismét nulla lesz az eredmény, amit bármivel hozunk VAGY kapcsolatba, azt a bármit fogjuk kapni, tehát a hamis ág is kiegyszerűsítve, ha ++x != p->width, akkor x értéke nem változik.

Aztán felmerült egy ilyen kódrészlet, szintén ugyaneme problémával kapcsolatban:
if (x == -1)
{
	k = i;
	++i;
	++x;
}
Ezt úgy sikerült ifteleníteni, hogy
dc[0] = k;
dc[1] = i;
dci = (x == -1);
k = dc[dci];
i += dci;
x += dci;
Mivel ez nem bitbűvészkedős, ezért gondolom ez már egyértelműbb egy picit, de azért leírom: dci tartalmazza az azonosság eredményét, ami 1 vagy 0 lehet és ennek megfelelően a dc tömb tartalmazza a két ág eredményeit k-ra nézve, ha a feltétel teljesül, akkor i, ha nem, akkor önmaga. Ha a feltétel teljesül, akkor i-t és x-et inkrementálni kell, amit úgyis lehet, hogy hozzáadom az azonosság eredményét.

Mondjuk egyébként ez a második rész ez a generalizált "ez vagy az", amit az első részre is felírhattam volna
dci = ++x == p->width;
dc[0] = x;
dc[1] = -1;
x = dc[dci];
de annyira örültem, hogy sikerült boolalgebrásan, hogy kapjabebilgéc. :)

Le az ifekkel rovatunkat hallották.


English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés

Név: (max 255 byte)

Email: (max 255 byte) Nem kötelező!

Üzenet: (max 65536 kar.) 65536-0=65536




crap_vkn v4.34.0 by TCH
Thx to saxus for the escaped string decoder function (PHP), the realIP function (PHP) & the SQL handle layer (PHP), to thookerov for the int_divide function (PHP), to Jeff Anderson for the getSelText function (JS), to Alex King for the insertAtCursor function (JS), Flood3r for the new CSS styles, Pety for the spamprotection idea and some design and comfort ideas, MaxMind for the IP2Country database, famfamfam for the flags of countries and an unknown PHP programmer for the removeAccents function.



Kecskebaszók ide!