odpovedáné bolo ale ešte skúsim aj ja niečo. Port je osem bitový. Každý jeden bit môže byť 0 alebo 1.
Teda by to vyzeralo nejako takto:
Kód: Vybrať všetko
76543210
00000000 0 0x0
00000001 1 0x1
00000010 2 0x2
00000011 3 0x3
00000100 4 0x4
....
10100010 162 0xA2
11111110 254 0xFE
11111111 255 0xFF
Ak sa na celý port pozrieme ako na číslo v pozičnej číselnej sústave so základom 2, tak v prostrednom stĺpci máme tomu zodpovedajúcu desiatkovú hodnotu a v poslednom stĺpci zase pre zmenu tomu zodpovedajúcu hexadecimálnu hodnotu (to je číslo v číselnej sústave so základom 16).
Kedže požiadavka bola testovať iba bity 0 a 1 tak som ich bitovým AND s maskou odrezal. Tá maska bola 3 preto lebo som robil masku tak že kde ma to nezaujíma som rachol nulu a kde ma to zaujíma som rachol jednotku.
Teraz som písmenom X označil bity 7-2 ktoré ma nezaujímajú a ich hodnota môže byť 0 alebo 1. Posledné dva nech majú napríklad hodnotu 0 a 1. Ak ich teraz bitovo vynásobím s maskou 3 tak operacia AND sa robí bit po bite a matematicky je to na úrovni prvej triedy ZDŠ. Takže tam kde je v maske 0 tak bude na 100 péro nula aj vo výsledku. Tam kde je v maske 1 tak vo výsledku bude hodnota bitu portu D.
Inak sú to také známe pravidlá z boolovej algebry ako
0×A=0
1×A=A
Stačí si teraz vyskúšat všetky 4 kombinácie najspodnejších dvoch bitov a je jasné že hodnota celého osembitového čísla bude 0,1,2, alebo 3. Kedže v C sa nedá normálne použiť binárna konštanta tak preto som tam napísal 3. Lebo každý čo bežne robí s bitmi vie že 3 je 00000011.
Ešte je niečo nejasné?
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.