Citat:
BIG FOOT: Nadam se da nisam previse nejasan :)
Nejasan si :)
Za pravljenje bit maski ti treba osnovno poznavanje bulove algebre, a konkretno za Delphi ti treba i poznavanje bitwise operatora. Mnogo je vazno i da znas binarnu i hex notaciju brojeva, a ako ne znas koristi windows calculator (scientific view).
Evo ti primer jedne maske (ova konkretno sluzi da proveris da li je broj neparan):
Code:
function JesteNeparan(x: integer): Boolean;
begin
result := (x and 1) = 1;
end;
Ovaj kood gore ti radi sledece:
npr, neka je x = 117;
to je binarno (32 bita, jer je integer):
00000000000000000000000001110101
and (ovo nije boolean nego bitwise operator)
00000000000000000000000000000001
-------------------------------------
dakle, (117 and 1) = 1;
u bitwise operacijama se gleda svaki bit operanada odvojeno (prvi bit od x sa prvim bitom 1, i tako do kraja).
za and: 0 and 0 == 0; 0 and 1 == 0; 1 and 0 = 0; 1 and 1 = 1.
Ako ti i dalje nije jasno zasto, pronadji negde na netu tablice bulovih operacija, pa malo pogledaj.
To ti je najjednostavnija maska (vadi jedan bit, najmanje tezine, iz operanda x).
Ako na primer zelis da dobijes 4 posledna bita u bajtu, maska bi bila:
x and 15, odnosno u hex notaciji x and $0F. x bi bio tipa byte.
ako zelis drugi bajt iz integera:
x and 65280, tj. x and $0000FF00
Inace, sto se tice byte-a, novi procesori su jako optimizovani za rad sa 4byte podacima, tj. integerima (i aritmeticke operacije i pristup memoriji), tako da se eventualna usteda u prostoru placa performansama. Mada, ruku na srce, ni jedno ni drugo ti na modernim racunarima ne predstavlja problem, tako da je stvar da li ces koristiti byte ili integer u svojim programima, vise licne preferencije.
Ono gde se byte koristi su strukture (npr. hederi raznih fajlova, paketi za komunikaciju kao sto je TCP/IP, i slicno). Mnogi formati su nastali u doba kad je svaki bajt bio dragocen, pa su informacije gusto pakovane. Da bi te informacije citao, moras imati podrsku za 'stare' tipove podataka, kao sto je byte.
ux, bas se raspisah...
ss.
When something is hard to do, then it's not worth doing.