Bitové operátory, operace s bity
Bitové operátory, operace s bity
Zdravím, za dobu svého "učení" programovat jsem prošel nemálo tutoriály a knihami a skoro u každého vyššího jazyka jsem narazil že existují tzv. bitové operátory. Chápu jak to funguje, ale zajímá mě kdy se to vůbec používá (je nezbytné). Například při práci v javě (tu jakžtakž umim).
ello dere
- domitea
- Tvůrce článků
-
Level 4.5
- Příspěvky: 1971
- Registrován: červen 09
- Bydliště: Královehradecký kraj
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Bitové operátory, operace s bity
Hodí se, když víš, že potřebuješ něco porovnat.
Příklad je nějaký obdelnik1 v obdelnik2 ?
Dejme tomu, že oba dva začínají na souřadnicích 0 a 0 a jejich rozměry jsou různé (Width a Height)
Je obdelnik2 menší než obdelnik1 ? Tohle by bylo na dvě podmínky, nicméně existuje AND (&&):
Nojo, ale když chci zjistit, jestli je obdelnik2 širší než obdelnik1 ? Samozřejmě, můžu tam změnit jedno < na >, ale tohle vlákno je binárních operátorech, takže co se bude hodit ? NOT !
Programátor je tvor líný a takhle to stačí jen zkopírovat
Samozřejmě jejich síla je mnohem, mnohem větší, ale jak nástřel to stačí

Příklad je nějaký obdelnik1 v obdelnik2 ?
Dejme tomu, že oba dva začínají na souřadnicích 0 a 0 a jejich rozměry jsou různé (Width a Height)
Je obdelnik2 menší než obdelnik1 ? Tohle by bylo na dvě podmínky, nicméně existuje AND (&&):
Kód: Vybrat vše
If ( (obdelnik2.width < obdelnik1.width) && (obdelnik2.height < obdelnik1.height) )
Nojo, ale když chci zjistit, jestli je obdelnik2 širší než obdelnik1 ? Samozřejmě, můžu tam změnit jedno < na >, ale tohle vlákno je binárních operátorech, takže co se bude hodit ? NOT !
Kód: Vybrat vše
If ( !(obdelnik2.width < obdelnik1.width) && (obdelnik2.height < obdelnik1.height) )
Programátor je tvor líný a takhle to stačí jen zkopírovat

Samozřejmě jejich síla je mnohem, mnohem větší, ale jak nástřel to stačí

- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Bitové operátory, operace s bity
je to celkem k ničemu, ale pár lidí mi tvrdí, že se ho hodí na oprávnění
jestli znáš masky z oblasti sítí tak tam se taky dělaj nějaký blbosti s jedničkama a nulama
jestli znáš masky z oblasti sítí tak tam se taky dělaj nějaký blbosti s jedničkama a nulama
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Bitové operátory, operace s bity
domitea: nevím jestli si špatně pochopil co jsem myslel. vím k čemu je <;> && || atd ptal sem se na <<; >>; &; | 
czechboy: ok jen sem si chtěl ujasnit jestli je to nějak šířeji používaný nebo jestli se tim dá něco zlepšit. díky

czechboy: ok jen sem si chtěl ujasnit jestli je to nějak šířeji používaný nebo jestli se tim dá něco zlepšit. díky
ello dere
- domitea
- Tvůrce článků
-
Level 4.5
- Příspěvky: 1971
- Registrován: červen 09
- Bydliště: Královehradecký kraj
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Bitové operátory, operace s bity
Když ony jsou binární a binární operátory 

Re: Bitové operátory, operace s bity
Operátory << a >> jsou bitový posun vlevo a vpravo, udáváš o kolik míst se má číslo posunout:
Posun vlevo (nahoru) je vlastně totéž jako násobení dvěma, posun vpravo (dolů) zase odpovídá dělení dvěma.
U ostatních vyjde jednička za těchhle podmínek:
Například AND:
Pro srovnání OR:
A nakonec XOR:
Ten poslední (XOR) používá třeba Vernamova šifra, která je jediná stoprocentně nerozluštitelná. Akorát v době jejího vzniku (před sto lety) si vystačili s dálnopisem a několika relátky, dnes je na takové věci potřeba pár miliard tranzistorů!
Kód: Vybrat vše
00110010 << 1 = 01100100
00110010 >> 1 = 00011001
Posun vlevo (nahoru) je vlastně totéž jako násobení dvěma, posun vpravo (dolů) zase odpovídá dělení dvěma.
U ostatních vyjde jednička za těchhle podmínek:
Kód: Vybrat vše
& - AND - když jsou oba bity 1
| - OR - když je aspoň jeden bit 1
^ - XOR - když jsou bity různé (jeden 0 a druhý 1)
Například AND:
Kód: Vybrat vše
00110010
01100100
--------
00100000
Pro srovnání OR:
Kód: Vybrat vše
00110010
01100100
--------
01110110
A nakonec XOR:
Kód: Vybrat vše
00110010
01100100
--------
01010110
Ten poslední (XOR) používá třeba Vernamova šifra, která je jediná stoprocentně nerozluštitelná. Akorát v době jejího vzniku (před sto lety) si vystačili s dálnopisem a několika relátky, dnes je na takové věci potřeba pár miliard tranzistorů!
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Bitové operátory, operace s bity
takže v nějakym běžnym "programování" to nepoužiju, to bych až potom potřeboval trochu víc teorie jak počítač pracuje v "nitru" že? nechci znít jako ignorant ale tak mi to připadá
ello dere
- domitea
- Tvůrce článků
-
Level 4.5
- Příspěvky: 1971
- Registrován: červen 09
- Bydliště: Královehradecký kraj
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Bitové operátory, operace s bity
Tak když programuješ v Céčku čipy tak se to hodí 

-
- Level 3
- Příspěvky: 461
- Registrován: září 12
- Pohlaví:
- Stav:
Offline
Re: Bitové operátory, operace s bity
Napriklad:
Nastavenie 3-tieho bitu do logickej jednotky:
BitSet= |= 8
Nulovanie 4-teho bitu:
BitReset &= ~16
--- Doplnění předchozího příspěvku (27 Bře 2013 19:09) ---
Oprava:
Nastavenie 3-tieho bitu do logickej jednotky:
BitSet |= 8
Nastavenie 3-tieho bitu do logickej jednotky:
BitSet= |= 8
Nulovanie 4-teho bitu:
BitReset &= ~16
--- Doplnění předchozího příspěvku (27 Bře 2013 19:09) ---
Oprava:
Nastavenie 3-tieho bitu do logickej jednotky:
BitSet |= 8
Re: Bitové operátory, operace s bity
honzaik píše:takže v nějakym běžnym "programování" to nepoužiju, to bych až potom potřeboval trochu víc teorie jak počítač pracuje v "nitru" že? nechci znít jako ignorant ale tak mi to připadá
Vědět jak pracuje počítač v nitru nikdy není na závadu, spíš naopak, čím víc toho znáš, tím spíš navrhneš kvalitní program. A v běžném programování tohle určitě využiješ, zkus se mrknout jak funguje třeba formát ICO, a nebo si prostuduj můj avatar...
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Bitové operátory, operace s bity
ano to chápu ale myslím tim, že abych moh přehodit bity atd potřebuju dobrou znalost toho tématu. jako vůbec jak a jaky přehodit atd. v tomhle jsem uplnej neznalec, asi si někdy nastuduju jak to funguje v tom nitru.
ello dere
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Bitové operátory, operace s bity
je to taky dobrý na nějaký nastavení když máš pevnej počet těch nastavení a hází se jen do hodnot ANO/NE
prostě se to hodí tam, kde máš jen 2 hodnoty, dá se tak ušetřit místo
prostě se to hodí tam, kde máš jen 2 hodnoty, dá se tak ušetřit místo
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: DotNetDotCom.org [Bot] a 4 hosti