Guest Odesláno: 25. Březen, 2012 Share Odesláno: 25. Březen, 2012 Manipulace s bity Obtížnost: Obsah: Co je to bit a bitové číslo (binárka) Bitové operace Co je to Bit a bitové číslo:,,Binárka'' je číselná soustava, která používá dva jedinečné symboly - Jedničky a nuly.My v pawn budeme používat dvojkovou soustavu né desítkovou.Možná že se vám může zdát že je toto zbytečné, není nutné znát ale v každodenním životě jej používáme, možná o tom ani nevíte. Když třeba zapínáte elektřinu, udělají to za vás jedničky a nuly. Bez nich by všechny naše technologie nemohli existovat a hlavně je binárka důležitá pro ty, kteří se zajímají o počítače.Bit je základní jednotka informace. Možná že jste už slyšeli někde, že v pawn používáme 32bitové proměnné. Opravdu je tomu tak. Kdybychom použíívali 1bit proměnné tak bychom měli pouze dvě možnosti - 1 a 0. Aneb říká se tomu logická proměnná nebo-li boolean. Ale tím se teď nebudu zabývat.8 bitů odpovídá jednomu bajtu. Tudíž můžeme říci že mám 4 bajtovou proměnnou.Př.: new test; ZAJÍMAVOST: proměnná zabírá přesně 0,000000004 GBZjistili jsme co je bit, teď se dostávám k bitovému číslu.Možná jste už viděli pokročilejší script kde jste objevili př.: 0b00011010 Tohle je bitové číslo. V pawn ho takto zapisujeme. Tato bitová hodnota se rovná číslu 26. Chtěli by jste vědět, jak jsem se k tomuto číslu dostal?Jednoduše, zapnul jsem kalkulačku na Win7 a přepl na režim programátorská .Ale dá se udělat zkouška.Smažeme první dva charaktery aneb 0bDostaneme číslo 00011010A začneme počítat.Hodnota * 2 * pořadí číslice (začínáme od 0)S prvním číslem nemusíme nic dělat.První číslo: 0 (0 * 2 * 0) = 0Druhé číslo: 0 (0 * 2 * 1) = 0Třetí číslo: 0 (0 * 2 * 2) = 0Čtvrté číslo: 1 (1 * 2 * 3) = 6Páté číslo: 1 (1 * 2 * 4) = 8Šesté číslo: 0 (0 * 2 * 5) = 0Sedmé číslo: 1 (1 * 2 * 6) = 12Osmé číslo: 0 (0 * 2 * 7) = 0A teď všechny hodnoty sečteme0+0+0+6+8+0+12+0 = 26Je to jednoduché.Nyní vám ukážu jak z čísla 26 vytvořit binární číslo. Postup je jednoduchý, jen ho pochopit.26 % 2 = 0 Zbytek: 1313 % 2 = 1 Zbytek: 6,5 (Zaokrouhlíme na 6)6 % 2 = 0 Zbytek: 33 % 2 = 1 Zbytek: 1,5 (Zaokrouhlíme na 1)1 % 2 = 1 Zbytek: 0,5 (Zaokrouhlíme na 0)Získáme binární číslo (shora dolů): 01011(000)Ale musíme nyní všechny čísla obrátit!!!!Získáme nyní číslo: 00011010Čísla souhlasí .Doufám že už tyhlety Jednoduché věci chápete.Bitové operace:Samozřejmě musí být pro práci s bity i nějaké operace, no a taky jsou. Máme jich celkem 7: Aritmetický bitový posun doleva << Aritmetický bitový posun doprava >> Logický posun doprava >>> Logický AND (logický součin) & Logický OR (logický součet) | Logický exklusivní součet ^ Bitová negace ~ Aritmetický bitový posun doleva <<:Použití: x << yAritmetický posun doleva posune bitové čísla x o y míst doleva a zprava se doplní nuly.Př.: 00001111 // 15 << 2 = 00111100 //60 � 00100011 // 35 << 1 = 01000110 // 70 � Vztah pro výpočet bitového posunu doleva: x << y = x * 2^yMůžeme počítat i dvojnásobek nějakého čísla pomocí bitového posunu. Je to rychlejší než násobení *2Viz.: #define DvaKrat(%0) (%0 << 1) � Aritmetický posun doprava >>Použití: x >> yPosuneme bitové čísla x o y míst. Z levé strany se doplní nuly.Př.: 00001100 // 12 >> 2 = 00000011 // 3 � 01001000 // 72 >> 3 = 00001001 // 9 � Vztah pro výpočet bitového posunu doprava: x >> y = x / 2^y Logický posun doprava >>>Je to opak posunu aritmetického levého. >>> posune nulu na první pozici vlevo.Př.: 01001101 // 77 >>> 2 = 00010011 // 19 � 11111111111111111111111111111000 // -8 >>> 1 = 011111111111111111111111111111000 // 2147483644 � Logický součin (&) (AND)Logický součin nám vynásobí všechny jedničky a nuly podle toho jak jdou za sebou.x & y = x (bitové číslo) & y (čím to máme vynásobit)Př.: 00010001 // 17 & 00001100 // 12 = 00000000 // 0 ///////////// 00010001 00001100 ________ 00000000 Tudíž: 17 & 12 = 0Nevěříte? Zkuste si toJeště jeden příklad aby jste lépe pochopili 01110111 // 119 & 000000100 // 2 = 00000100 // 2 ///////////// 01110111 00000100 ________ 00000100 Logický součet (|) (OR):Doufám že všichni ví že součet je +. Jako u součinu sčítáme čísla pod sebou a nelekněte se jedné věci:Pokud narazíme že se nachází 1 + 1 = 2!!!! NE, 1 + 1 u bitového součtu se rovná jedné !!!!Př.: 01010101 // 85 | 00100000 // 32 = 01110101 // 117 /////////////// 01010101 00100000 ________ 01110101 00010001 // 17 | 01111111 // 127 = 01111111 // 127 /////////////// 00010001 01111111 ________ 01111111 Logický exklusivní součet (^):Exklusivní součet je podobný jako obyčejný logický součet, jenže s tou výjimkou že !!!!!! 1 + 1 = 0 !!!!!!Př.: 00100000 // 32 ^ 00100000 // 32 = 00000000 // 0 //////////////////// 00100000 00100000 ________ 00000000 00111111 // 63 ^ 00101010 // 42 = 00010101 // 21 ///////////////// 00111111 00101010 ________ 00010101 Bitová negace ~:Narozdíl od všech ostatních operátorů má pouze jeden operand.Tudíž neděláme toto: 17 ~ 11Ale jen toto: ~17Z nuly je jednička a z jedničky je nula ...Př.: ~ 00010110�//�22 = 11101001�//�(-23) ///////////////////// 00010110 ________ 11101001 ~ 00000001�//�1 � = 11111110�//�-2 ///////////////// 00000001 ________ 11111110 ------------------------------------------------------------------------------Tak doufám že se Vám TuT líbil a že jste si něco nového přinesli. Je mi jasné že to hned napoprvé nepochopíte (já se to učil sám víceméně měsíc).Mort. Ověřený návod Tento návod prošel validací, a lze ho proto považovat za ověřený. Link to comment Share on other sites More sharing options...
XxM4st3rxX 3 Odesláno: 25. Březen, 2012 Share Odesláno: 25. Březen, 2012 Chválim 10/10 Link to comment Share on other sites More sharing options...
Guest Odesláno: 25. Březen, 2012 Share Odesláno: 25. Březen, 2012 Good 10/10 Link to comment Share on other sites More sharing options...
Guest Odesláno: 25. Březen, 2012 Share Odesláno: 25. Březen, 2012 10/10 výbornej tut Link to comment Share on other sites More sharing options...
Ondrej Igar 24 Odesláno: 25. Březen, 2012 Share Odesláno: 25. Březen, 2012 Hej luxusný!Tak takhle to vnímá server(počítač) Je to výborně propracované + vysvětlené! 11/10 ! Link to comment Share on other sites More sharing options...
Guest Odesláno: 25. Březen, 2012 Share Odesláno: 25. Březen, 2012 good 10/10 ako som vravel nemam čas písať tuty a som rád že sa do toho niekto vrhol Link to comment Share on other sites More sharing options...
Guest Odesláno: 25. Březen, 2012 Share Odesláno: 25. Březen, 2012 Jen bych ještě rád upozornil že pokud chceme vložit do pawn binární číslo tak použijeme 0b(číslo). To je označení pro to číslo, pokud tam totiž nebudete mít 0b tak to pawn může brát jako normální číslo př. (00010001) = 10001. Při použití 0b si to pawno překonvertuje na číslo 17. Link to comment Share on other sites More sharing options...
Hrb™ 48 Odesláno: 25. Březen, 2012 Share Odesláno: 25. Březen, 2012 Hezké! 10/10 ! Link to comment Share on other sites More sharing options...
Guest Danny-ho 2. účet Odesláno: 25. Březen, 2012 Share Odesláno: 25. Březen, 2012 Práve toto som potreboval, Super 10/10. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now