Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

Php ton thao tc bit

Php ton thao tc bit


Bi:
Wiki Pedia
Trong ngn ng my tnh, cc php ton thao tc bit (ting Anh: bitwise operation) thc
hin tnh ton (theo tng bit) trn mt hoc hai chui bit, hoc trn cc s nh phn. Vi
nhiu loi my tnh, vic thc thi cc php ton thao tc bit thng nhanh hn so vi khi
thc thi cc php ton cng, tr, nhn, hoc chia.

Cc ton t thao tc bit


Cc ton t thao tc bit (ting Anh: bitwise operator) l cc ton t c s dng chung
vi mt hoc hai s nh phn to ra mt php ton thao tc bit. Hu ht cc ton t
thao tc bit u l cc ton t mt hoc hai ngi.
NOT
Ton t thao tc bit NOT cn c gi l ton t ly phn b (complement) l mt ton
t mt ngi c nhim v ph nh lun l tng bit ca ton hng ca n - tc o 0 thnh
1 v ngc li. V d, thc hin php ton NOT vi s nh phn 0111:
NOT 0111
--------= 1000
Trong cc ngn ng lp trnh C, C++, Java, C#, ton t thao tc bit NOT c biu din
bng k hiu "~" (du ng). Trong Pascal, ton t ny l "not". V d:
x = ~y; // C
Hay
x := not y; { Pascal }

1/4

Php ton thao tc bit

Cu lnh trn s gn cho x gi tr "NOT y" - tc phn b ca y. Ch rng, ton t ny


khng tng ng vi ton t lun l "not" (biu din bng du chm than "!" trong C/
C++). V vn ny, xin xem bi ton t hoc cc bi v ngn ng C/C++.
Ton t NOT hu dng khi ta cn tm b 1 ca mt s nh phn. N cng c th c
s dng lm bc u tin tm s b 2.
OR
Ton t thao tc bit OR l mt ton t hai ngi, c nhim v thc hin tnh ton (trn
tng bit) vi hai chui bit c cng di to ra mt chui bit mi c cng di vi
hai chui bit ban u. Trn mi cp bit tng ng nhau ca hai ton hng, ton t OR
s tr v 1 nu c mt trong hai bit l 1, cn trong tt c cc trng hp khc, OR s to
ra mt bit 0. V d, thc hin php ton OR vi hai s nh phn 0101 v 0011:
0101
OR 0011
-------= 0111
Trong C, C++, Java, C#, ton t thao tc bit OR c biu din bng k hiu "|" (vch
ng). Trong Pascal, ton t ny l "or". V d:
x = y | z; // C
Hay:
x := y or z; { Pascal }
Cu lnh trn s gn cho x kt qu ca "y OR z". Ch rng ton t ny khng tng
ng vi ton t lun l "or" (biu din bng cp vch ng "||" trong C/C++). V vn
ny, xin xem bi ton t hoc cc bi v ngn ng C/C++.
ng dng in hnh ca ton t thao tc bit OR l dng bt (set) mt bit c th trong
mt mu bit cho trc. V d: gi s ta c mu bit 0010. Ta thy, bit th nht, th hai v
th t ca mu cha c bt (0), by gi, nu ta mun bt bit u tin ca mu, ta c
th s dng ton t OR nh minh ha sau:
0010
OR 1000
2/4

Php ton thao tc bit

-------1010
Khi lm vic vi cc my khng c nhiu khng gian b nh trng, cc lp trnh vin
thng p dng k thut trn. Lc , thay v khai bo tm bin kiu bool (C++) c lp,
ngi ta s dng tng bit ring l ca mt byte biu din gi tr cho tm bin .
XOR
Cng ging OR, ton t thao tc bit XOR (cn gi l OR c loi tr - exclusive OR)
cng l mt ton t hai ngi, c nhim v thc hin tnh ton (trn tng bit) vi hai
chui bit c cng di to ra mt chui bit mi c cng di vi hai chui bit ban
u. Tuy nhin, trn mi cp bit tng ng nhau ca hai ton hng, ton t XOR s tr
v 1 nu ch c mt trong hai bit l 1 (v bit cn li l 0), ngc li, XOR tr v bit 0.
V d:
0101
XOR 0011
--------0110
(cch nh d nht l: 2 bit ging nhau tr v 0, 2 bit khc nhau tr v 1) Trong C, C++,
Java, C#, ton t thao tc bit XOR c biu din bng k hiu "^" (du m). Trong
Pascal, ton t ny l "xor". V d:
x = y ^ z; // C
Hay:
x := y xor z; { Pascal }
Cu lnh trn s gn cho x kt qu ca "y XOR z". Cc lp trnh vin hp ng
(Assembly) thng s dng ton t XOR gn gi tr ca mt thanh ghi (register) v
0. Khi thc hin php ton XOR cho mt mu bit vi chnh bn thn n, mu nh phn
nhn c s ton bit 0. Trn nhiu kin trc my tnh, s dng XOR gn 0 cho mt
thanh ghi s c CPU x l nhanh hn so vi chui thao tc tng ng np v lu
gi tr 0 vo thanh ghi.

3/4

Php ton thao tc bit

Dch chuyn v quay bit


Php dch bit c k hiu: >> (dch phi) hoc << (dch tri) V d: 5 >> 1 = 2; 2 >> 1
= 1; 1 >> 1 = 0;
Gii thch: 5b = 0101 sau khi dch 1 tr thnh 0010 (=2d) v c tip tc nh vy.

4/4

You might also like