Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Objasnění citace z manuálu

Ahoj, může mi tohle někdo vysvětlit ? Proč spustí zrovna tyto dvě funckce ? Je každé číslo unikátní pro spuštění takových funkcí (splnění podmínek)? Předem díky

Cituji:

Tímto nastavíme sys[140] na hodnotu 20. Program následně podle jednotlivých bitů spustí funkce 'paty_bit_je_nastaven' a 'treti_bit_je_nastaven'.

sys[140] = 20;

if (sys[140] & 1) prvni_bit_je_nastaven();
if (sys[140] & 2) druhy_bit_je_nastaven();
if (sys[140] & 4) treti_bit_je_nastaven();
if (sys[140] & 8) ctvrty_bit_je_nastaven();
if (sys[140] & 16) paty_bit_je_nastaven();
Předmět Autor Datum
20 = 16 + 4 Napiš si ty čísla binárně a bude to ještě jasnější.
Wikan 26.11.2015 22:32
Wikan
20 = 16 + 4 ? A proč ne třeba 20 = 15 + 5 ? 20 = 10 + 10 ?
Honza Marek 26.11.2015 22:45
Honza Marek
Protože se na to musíš dívat binárně (jsi v oblasti bitů, s hodnotou pouze 0/1). 2 na 0 = 1 2 na 1… nový
L-Core 27.11.2015 06:09
L-Core
5, 10 ani 15 nejsou mocniny dvou. nový
Wikan 27.11.2015 07:43
Wikan
A tohle někomu dává smysl ? Když předám scriptu nějakou hodnotu tak dostanu takové výsledky. Proč j… nový
Honza Marek 27.11.2015 10:56
Honza Marek
Jaký skript máš na mysli? nový
Wikan 27.11.2015 10:58
Wikan
Netuším o jaký script se jedná ani netuším v čem to je napsaný, nedostanu se na zdrojové kódy :-( nový
Honza Marek 27.11.2015 11:08
Honza Marek
Tak to vypadá, že tam zafungovalo omezení velikosti čísel na 32 bitů. U čísel, která ten rozsah přes… nový
Wikan 27.11.2015 11:58
Wikan
Můžu to zkusit, jaké je poslední číslo aby nepřesáhlo 32bitů ? nový
Honza Marek 27.11.2015 13:29
Honza Marek
2^32 - 1 nový
Wikan 27.11.2015 13:32
Wikan
Pokud je to 4294967295 tak to vrací -1, lze z toho něco usoudit ? nový
Honza Marek 27.11.2015 13:35
Honza Marek
4294967296 (2^32) vrací 0 nový
Honza Marek 27.11.2015 13:36
Honza Marek
Tak je to tak, jak jsem psal. nový
Wikan 27.11.2015 13:36
Wikan
Milane jsi fakt bedna.. :-) Ještě, že tě tu máme... Díky moc. poslední
Honza Marek 27.11.2015 13:42
Honza Marek

A tohle někomu dává smysl ?

Když předám scriptu nějakou hodnotu tak dostanu takové výsledky. Proč jsou některé stejné a některé zcela odlišné ?

hodnota     # vysledek 
1234567890  # 1234567890
1111111112  # 1111111112
9090909090  # 500974498
12345678901 # -539222987
12345678902 # -539222986

nebo zadejte co mám zadat, ať je se čeho chytnout.. díky

Zpět do poradny Odpovědět na původní otázku Nahoru