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:
Ukaž světu,
že jsi Maker!
Koupit tričko
Kafe pro Chiptrona
Dodej energii dalšímu článku

Související články

– ROBOTboard (HW) – Octopus open source knihovny (FW) – Nastavení zařízení a periferií – ds: device setting > pinouts – ios: input-output setup – Upgrade systému – Displeje – Tlačítka – Mechatronika – Čidla a vstupy – Shrnutí V…

Toto je první díl ze tří – úvodního kurzu Micropython na ESP32.

Další příklad kódu ve VHDL pro FGPA.

Slyšíme to dnes a denně, zejména před volbami, „chceme učenou společnost“, „chceme tu vytvářet světové know-how“. Naučit se ale logicky či kriticky myslet a naučit se pracovat s chybou není samozřejmost nám od narození daná. Musíme se je učit a…

Další příklad kódu ve VHDL pro FGPA.

Trendy