Sdílejte chiptron.cz na sociálních sítích



RSS feeds

Praktické ukázky bitových operací v CTisk

Dělají Vám problémy bitové operace (OR, AND, XOR, bitový komplement) a nevíte jaký výsledek z toho vyjde? Pak si přečtěte následující článek, který snad objasní vaše tápání + přidá několik vzorových příkladů.

operátor | - bitový OR
pravdivostní tabulka hradla OR
A | B || Y
------------
0 | 0 || 0
0 | 1 || 1
1 | 0 || 1
1 | 1 || 1

A = 0x0F
B = 0x0C
Y = (A | B)
Y = 0x0F
0b00001111 - A
0b00001100 - B
----------------
0b00001111 - výsledek OR


operátor & - bitový AND
pravdivostní tabulka hradla AND
A | B || Y
------------
0 | 0 || 0
0 | 1 || 0
1 | 0 || 0
1 | 1 || 1

A = 0x0F
B = 0x0C
Y = (A & B)
Y = 0x0C
0b00001111 - A
0b00001100 - B
----------------
0b00001100 - výsledek AND


operátor ^ - bitový exclusive OR (XOR)
pravdivostní tabulka hradla XOR
A | B || Y
------------
0 | 0 || 0
0 | 1 || 1
1 | 0 || 1
1 | 1 || 0

Y = 0x00
A = 0x0F
B = 0x0C
Y ^= (A | B) --nejprve se provede bitový OR mezi A a B (viz výše) a poté se provede XOR s Y
Y = 0x0F
0b00001111 - A
0b00001100 - B
----------------
0b00001111 - výsledek OR
0b00000000 - Y
----------------
0b00001111 - výsledek XOR


Y = 0x00
A = 0x0F
B = 0x0C
Y ^= (A & B) --nejprve se provede bitový AND mezi A a B (viz výše) a poté se provede XOR s Y
Y = 0x0C
0b00001111 - A
0b00001100 - B
-------------------------
0b00001100 - výsledek OR
0b00000000 - Y
-------------------------
0b00001100 - výsledek XOR


operátor ~ - bitový komplement
tabulka pro bitový komplement
A || Y
------------
0 || 1
1 || 0

Y = 0x00
A = 0x0F
B = 0x0C
Y = ~(A | B) --nejprve se provede bitový OR mezi A a B (viz výše) a poté se provede bitový komplement s Y
Y = 0xF0
0b00001111 - A
0b00001100 - B
----------------
0b00001111 - výsledek OR
0b00000000 - Y
----------------
0b11110000 - výsledek bitový komplement


Y = 0x00
A = 0x0F
B = 0x0C
Y = ~(A & B) --nejprve se provede bitový AND mezi A a B (viz výše) a poté se provede bitový komplement s Y
Y = 0xF3
0b00001111 - A
0b00001100 - B
----------------
0b00001100 - výsledek AND
0b00000000 - Y
----------------
0b11110011 - výsledek bitový komplement


Bitový posun << >> - vlevo/vpravo
Y = 0x0F >> 2 --bitový posun vpravo
Y= 0x03
0b00001111 - 0x0F
0b00000011 - výsledek posunu vpravo

Y = 0x0F >> 2 --bitový posun vlevo
Y = 0x3C
0b00001111 - 0x0F
0b00111100 - výsledek posunu vlevo

Další příklady:
Y = 0x0C
Y &= 0x0F --> Y = 0x0C & 0x0F
Y = 0x0C
0b00001111 - 0x0F
0b00001100 - 0x0C
----------------
0b00001100 - výsledek AND

Y = 0x00
Y ^= ~0x0F --> nejprve se zneguje 0x0F na 0xF0 a poté se provede bitový XOR tedy:
Y = 0xF0

0b00001111 - 0x0F
----------------
0b11110000 - výsledek bitový komplement
0b00000000 - Y
----------------
0b11110000 - výsledek XOR

Upozornění

Administrátor těchto stránek ani autor článků neručí za správnost a funkčnost zde uvedených materiálů.
Administrátor těchto stránek se zříká jakékoli odpovědnosti za případné ublížení na zdraví či poškození nebo zničení majetku v důsledku elektrického proudu, chybnosti schémat nebo i teoretické výuky. Je zakázané používat zařízení, která jsou v rozporu s právními předpisy ČR či EU.
Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva.
Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ.
10,933,363 návštěv