Stránka 1 z 1

Bitové operátory, operace s bity

Napsal: 26 bře 2013 20:57
od honzaik
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).

Re: Bitové operátory, operace s bity

Napsal: 26 bře 2013 22:33
od domitea
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:

Re: Bitové operátory, operace s bity

Napsal: 26 bře 2013 22:36
od CZechBoY
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

Re: Bitové operátory, operace s bity

Napsal: 26 bře 2013 22:53
od honzaik
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

Re: Bitové operátory, operace s bity

Napsal: 26 bře 2013 23:12
od domitea
Když ony jsou binární a binární operátory :lol:

Re: Bitové operátory, operace s bity

Napsal: 26 bře 2013 23:32
od faraon
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ů!

Re: Bitové operátory, operace s bity

Napsal: 27 bře 2013 17:21
od honzaik
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á

Re: Bitové operátory, operace s bity

Napsal: 27 bře 2013 18:27
od domitea
Tak když programuješ v Céčku čipy tak se to hodí :wink:

Re: Bitové operátory, operace s bity

Napsal: 27 bře 2013 19:08
od Wordstar14
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

Re: Bitové operátory, operace s bity

Napsal: 27 bře 2013 19:11
od faraon
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...

Re: Bitové operátory, operace s bity

Napsal: 27 bře 2013 20:20
od honzaik
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.

Re: Bitové operátory, operace s bity

Napsal: 27 bře 2013 21:35
od CZechBoY
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