Bitové operátory, operace s bity

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
honzaik
Level 2.5
Level 2.5
Příspěvky: 337
Registrován: říjen 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Bitové operátory, operace s bity

Příspěvekod honzaik » 26 bře 2013 20:57

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

Reklama
Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1971
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Bitové operátory, operace s bity

Příspěvekod domitea » 26 bře 2013 22:33

Hodí se, když víš, že potřebuješ něco porovnat. :lol:

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 :D

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

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Bitové operátory, operace s bity

Příspěvekod CZechBoY » 26 bře 2013 22:36

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
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

Uživatelský avatar
honzaik
Level 2.5
Level 2.5
Příspěvky: 337
Registrován: říjen 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Bitové operátory, operace s bity

Příspěvekod honzaik » 26 bře 2013 22:53

domitea: nevím jestli si špatně pochopil co jsem myslel. vím k čemu je <;> && || atd ptal sem se na <<; >>; &; | :D
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

Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1971
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Bitové operátory, operace s bity

Příspěvekod domitea » 26 bře 2013 23:12

Když ony jsou binární a binární operátory :lol:

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Bitové operátory, operace s bity

Příspěvekod faraon » 26 bře 2013 23:32

Operátory << a >> jsou bitový posun vlevo a vpravo, udáváš o kolik míst se má číslo posunout:

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)

Uživatelský avatar
honzaik
Level 2.5
Level 2.5
Příspěvky: 337
Registrován: říjen 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Bitové operátory, operace s bity

Příspěvekod honzaik » 27 bře 2013 17:21

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

Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1971
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Bitové operátory, operace s bity

Příspěvekod domitea » 27 bře 2013 18:27

Tak když programuješ v Céčku čipy tak se to hodí :wink:

Wordstar14
Level 3
Level 3
Příspěvky: 461
Registrován: září 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Bitové operátory, operace s bity

Příspěvekod Wordstar14 » 27 bře 2013 19:08

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

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Bitové operátory, operace s bity

Příspěvekod faraon » 27 bře 2013 19:11

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)

Uživatelský avatar
honzaik
Level 2.5
Level 2.5
Příspěvky: 337
Registrován: říjen 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Bitové operátory, operace s bity

Příspěvekod honzaik » 27 bře 2013 20:20

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

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Bitové operátory, operace s bity

Příspěvekod CZechBoY » 27 bře 2013 21:35

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
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


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti