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

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

Sdílejte článek:

Související články

Obsah: Rodina mikrokontrolérů PIC32CM, řada MC – Řízení práce motorů pomocí mikrokontrolérů PIC32CM – Programování mikrokontrolérů s použitím MPLAB X a Harmony Mikrokontroléry z rodiny PIC32MK GPG a MCM – Displeje a dotykové uživatelské rozhraní s PIC32 – Certifikace a…

OctopusLAB (komunitní projekt české společnosti Octopus engine s.

O zařízení EasyTerm jsem tu už několikrát psal (tady a tady) – jednoduchý a všestranný pomocník při vývoji.

Cílem tohoto návodu je ukázat, jak lze používat filtry na seznamy.

– Změny v Micropythonu si vynucují změnu octopus() – Opakování a podrobnější doplnění – LED – nejjednodušší knihovna pro testování – web_server() – Webový editor IDE (integrated development environment) – Některé další vychytávky – Drobné projekty – examples V minulých…