..:: Operacje bitowe ::..

Prezentujê tutaj popularne operatory bitowe u¿ywane czêsto w kryptografii oraz programowaniu. Do ka¿dego operatora bitowego dodajê przyk³adowy kod w ASEMBLERze oraz TURBO PASCAL'u prezentuj±cy u¿ycie operatorów w tych¿e jêzykach.

Znajdziecie tu tak¿e ogólne informacje o wykorzystaniu danych operatorów oraz krokowe opisy operacji na bitach sposobem pisemnym (na papierze - jak np. dodawanie sposobem pisemnym, które na pewno przerabiali¶cie na matematyce w szkole podstawowej).

W tek¶cie zaprezentowane zosta³y operatory: NOT, AND, OR, XOR, NOR oraz PRZESUNIÊCIA BITOWE w prawo i lewo.


NOT

Nazywany tak¿e negacj±. Jest czêsto wykorzystywany w prostej kryptografii. NOT nie ma zbyt szerokiego zastosowania w programowaniu.

- NOT odwraca bity.
- Operator NOT jest jednoargumentowy!
ASEMBLER: not A
PASCAL  : not A (A := not A)

not 1 = 0 
not 0 = 1

not 11101011
=   0

not 11101011
=   00

not 11101011
=   000

not 11101011
=   0001

not 11101011
=   00010

not 11101011
=   000101

not 11101011
=   0001010

not 11101011
=   00010100

not 11101011 = 00010100
not      235 = 20

AND

Nazywany tak¿e mno¿eniem logicznym. Jest czêsto wykorzystywany w prostej kryptografii do haszowania hase³ (szyfrowania jednostronnego, czyli nieodwracalnego). Mo¿na go te¿ wykorzystywaæ do sprawdzania, czy interesuj±cy nas bit jest ustawiony. Wystarczy wtedy napisaæ odpowiedni± maskê i porównaæ j± z danymi w³a¶nie za pomoc± operatora AND.

- AND ustawia bit, je¶li oba argumenty s± ustawione.
- Operator AND jest dwuargumentowy.
Reklama



ASEMBLER: and A, B
PASCAL  : A and B (A := A not B)

1 and 1 = 1
1 and 0 = 0
0 and 1 = 0
0 and 0 = 0 
    10011101
and 11001100
=   1

    10011101
and 11001100
=   10

    10011101
and 11001100
=   100

    10011101
and 11001100
=   1000

    10011101
and 11001100
=   10001

    10011101
and 11001100
=   100011

    10011101
and 11001100
=   1000110

    10011101
and 11001100
=   10001100

10011101 and 11001100 = 10001100
157      and 204      = 140

OR

Nazywany tak¿e dodawaniem logicznym. Operator OR jest wykorzystywany w prostej kryptografii do haszowania hase³ (patrz operator AND).

- OR ustawia bit, je¿eli choæ jeden z argumentów jest ustawiony.
- Operator OR jest dwuargumentowy!
1 or 1 = 1
1 or 0 = 1
0 or 1 = 1
0 or 0 = 0
ASEMBLER: or A, B
PASCAL  : A or B (A := A or B)

    00011011
or  11000110
=   1

    00011011
or  11000110
=   11

    00011011
or  11000110
=   110

    00011011
or  11000110
=   1101

    00011011
or  11000110
=   11011

    00011011
or  11000110
=   110111

    00011011
or  11000110
=   1101111

    00011011
or  11000110
=   11011111

00011011 or 11000110 = 11011111
27       or 198      = 223

XOR

Nazywany tak¿e ró¿nic± symetryczn± lub sum± modulo 2. Jest u¿ywany w prostej kryptografii. Wykorzystuje siê go tak¿e do zerowania danych (je¿eli wykonamy dzia³anie A xor A, to wynik bêdzie siê sk³ada³ z samych zer).

- XOR ustawia bit, je¿eli argumenty s± ró¿ne.
- Operator XOR jest dwuargumentowy.
ASEMBLER: xor A, B
PASCAL  : A xor B (A := A xor B)

1 xor 1 = 0
1 xor 0 = 1
0 xor 1 = 1
0 xor 0 = 0
    10010100
xor 10110111
=   0

    10010100
xor 10110111
=   00

    10010100
xor 10110111
=   001

    10010100
xor 10110111
=   0010

    10010100
xor 10110111
=   00100

    10010100
xor 10110111
=   001000

    10010100
xor 10110111
=   0010001

    10010100
xor 10110111
=   00100011

10010100 xor 10110111 = 00100011
148      xor 183      = 35

NOR

Operator NOR nazywa siê tak¿e zerem logicznym. Jest bardzo rzadko wykorzystywany w programowaniu. Jest to jeden z typów bram logicznych, które umieszczane s± w uk³adach wewnêtrznych komputera. Tego operatora rzadko u¿ywa siê w kryptografii.

- NOR ustawia bit, je¶li oba argumenty s± przestawione
- Operator NOR jest dwuargumentowy.
ASEMBLER: [brak takiego operatora]
PASCAL  : [brak takiego operatora]

1 nor 1 = 0
1 nor 0 = 0
0 nor 1 = 0
0 nor 0 = 1

    01110001
nor 10010001
=   0

    01110001
nor 10010001
=   00

    01110001
nor 10010001
=   000

    01110001
nor 10010001
=   0000

    01110001
nor 10010001
=   00001

    01110001
nor 10010001
=   000011

    01110001
nor 10010001
=   0000111

    01110001
nor 10010001
=   00001110

01110001 nor 10010001 = 00001110
113      nor      145 = 14

PRZESUNIÊCIE BITOWE W PRAWO (SHR)

Przesuniêcie bitów liczby o jedno miejsce w prawo jest równoznaczne z dzieleniem liczby przez dwa. Zasada ta nie sprawdza siê w przypadku operacji na liczbach zmiennoprzecinkowych (zmiennoprzecinkowe typy danych maj± odmienn± reprezentacjê bitow± ni¿ typy ca³kowite)!

- Przesuniêcie bitowe w prawo przesuwa ustawione bity o N liczbê miejsc w prawo.
- Przesuniêcie bitowe ZAZWYCZAJ jest dwuargumentowe.
ASEMBLER: shr A, N
PASCAL  : A shr N (A := A shr N)
   00110000
>> 1       
=  00011000

   00110000
>> 2       
=  00001100

PRZESUNIÊCIE BITOWE Z LEWO (SHL)

Przesuniêcie bitów liczby o jedno miejsce w lewo jest równoznaczne z mno¿eniem liczby przez dwa. Zasada ta nie sprawdza siê w przypadku operacji na liczbach zmiennoprzecinkowych (zmiennoprzecinkowe typy danych maj± odmienn± reprezentacjê bitow± ni¿ typy ca³kowite)!

- Przesuniêcie bitowe w lewo przesuwa ustawione bity o N liczbê miejsc w lewo.
- Przesuniêcie bitowe ZAZWYCZAJ jest dwuargumentowe.
ASEMBLER: shl A, N
PASCAL  : A shl N (A := A shl N)
   00011100
<< 1       
=  00111000

   00011100
<< 2       
=  01110000
Autorem tekstu jest
Bulbin - gg: 5550418

Uwa¿asz, ¿e prezentowane przez nas informacje s± u¿yteczne? Pomó¿ nam je wypromowaæ!

  • dodaj do flakera
  • blipnij o tym
Kana³ RSS
Co na forum?
Jak odzyskaæ...
Pêtla foreach
poszukuje po...
Problem z fu...
poszukuje do...
ServerShell status: dzia³a
[zaló¿ konto]
Subskrypcja
Je¶li chcesz byæ powiadamiany o nowo¶ciach na stronie, wpisz tu swój e-mail

RSS

Dodaj do Google