You are on page 1of 8

Blog Thut ton

Chuyn x l Bit
Nh ta bit, mi s t nhin u c th biu din c di dng
nh phn.
V d

13 : 1101

42: 101010

i vi my tnh, cc gi tr s c lu bi cc bin di dng

chui nh phn c di tng ng vi kiu bin .


Trong Pascal, mt s kiu bin ph bin nh :

Byte: c di 8 bit.

Integer, Word: c di 2*8 = 16 bit

Longint: c di 4*8 = 32 bit


Do nu bin x c kiu byte v lu gi tr 13 th dy bit ca bin
x l : 00001101
Cc bit ca bin c nh s t phi sang tri bt u t 1. v
d trn bit th nht ca x l 1 v bit th 2 ca x l 0
Cc php ton x l bit i vi 2 dy bit x1, x2 s x l ln lt
bit th nht ca x1 vi bt th nht ca x2, bit th 2 ca x1 vi
bit th 2 ca x2,, bit th k ca x1 vi bit th k ca x2, c nh

vy cho n ht.

Blog Thut ton

C 6 php x l bit c bn sau y:

Php cng bit


(OR)

Kt qu bng 0 khi c 2 bit u c gi tr l 0,


cn li kt qu php OR l 1.Vd:
x1
= 13 (00001101)
x2 = 42 (00101010)x1 OR x2 = 47 (00101111)

Php o bit
(NOT)

o gi tr bit 0 thnh 1 v 1 thnh 0Vd:


= 13 (00001101)NOT(x) = 242 (11110010)

Php nhn bit


(AND)

Kt qu bng tch ca 2 gi tr bit


Vd:
x1 = 13 (00001101)x2 = 42 (00101010)x1
AND x2 = 8 (00001000)

Php loi tr
bit (XOR)

Kt qu l 0
nhau
Kt qu l 1
nhauVd:
(00101010)x1

Php dch phi


(Shr k)

Dch chuyn dy sang phi k btVd:


13
(00001101)x Shr 2 = 3 (00000011)

Php dch tri


(Shl k)

Dch chuyn dy sang tri k btVd:


(00001101)x Shl 2 = 3 (00110100)

nu 2 bit c XOR c gi tr ging


nu 2 bit c XOR c gi tr khc
x1 = 13 (00001101)x2 = 42
XOR x2 = 39 (00100111)

1/Ly gi tr bit:
Cho bit bit th k ca bin x nhn gi tr 0 hay 1.
Function GetBit(k,x:Word):Byte;
Begin
GetBit := (x Shr (k-1)) and 1;
End;
2/Gn gi tr bit :
gn gi tr c cho bit th k ca bin x.
Procedure SetBit(c:byte; k:Word; var
Begin
If c = 1 then
x := x or (1 shl(k-1))
Else x := x and (not (1 shl (k-1)));
End;

x:

Word);

x =
x = 13

Blog Thut ton

u im ca x l bit:

V b nh:

i vi ngn ng lp trnh c b nh hn ch nh Turbo

Pascal, x l bit c th c s dng to mng nh du. Vd 1


bin boolean ch nh du c 1 phn t c gi tr True hay False
trong khi nu x l bt th 1 bin boolean tng ng vi 8 bit gi
tr 0,1 do c th nh du cho 8 phn t.

V tc : Cc php x l trn bit c tc nhanh hn nhiu ln so


vi cc php x l khc.
V d:

Hai php (x div 2) v (x shr 1) l tng ng nhau nhng php (x


shr 1) c tc nhanh hn nhiu ln.

Dng dy bit nh du True False c tc x l nhanh hn


nhiu so vi dng mng nh du. Do trong cc bi ton i hi

vic thay i trng thi nh du nhiu ln th ngi ta vn hay


dng x l bit ci thin tc chng trnh.
ng dng ca x l bt qua cc bi ton c th sau:
Bi ton:

Lit k tp hp con

Cho tp hp con N phn t khc nhau, lit k tt c cc tp hp con


ca tp N phn t cho (k c tp rng).
Gi : Xt dy gm N bit. Mi tp con ca tp N phn t u c th
biu din bng dy N bit ny v ngc li mi dy bit c di N
u biu din 1 tp con ca tp N phn t. Do ta c th duyt tt
c cc dy bit di N xut ra tp con tng ng.

Blog Thut ton

Mt khc ta c nhn xt tt c cc dy bit di N tng ng vi


gi tr 0 cho n 2n-1
00000

00001

00010

11110 = 2n 2
11111 = 2n 1
Cho nn ta c mt thut ton c th sau: Duyt bin x chy t 0 n
2n 1. Vi mi gi tr x, xut ra tp con da vo dy bit ca n.
Bi ton:

S c bit(SNUM)

Cho dy N s t nhin c gi tr trong on [0,65535] (N<=1000000).


Trong ch c mt s xut hin 1 ln gi l s c bit, cc s
cn li c s ln xut hin l mt s chn. Yu cu tm ra s c
bit ny.
D liu: SNUM.INP
Dng u tin ghi gi tr N

N dng tip theo, mi dng ghi mt s trong dy N s Kt


qu: SNUM.OUT
S c bit tm c
V d:

Blog Thut ton

SNUM.INP
5
12345
9876
12345
145
9876
SNUM.OUT
145
Gi :
Cch th nht: Xp N s t nhin ny ln N v dn cc s ny v pha
bn phi, theo
1
2
3
9
8
7
1
2
3
1
4
5
9
8
7

vd trn ta c bng s:
4
5
6
4
5
6

By gi ta xt theo tng ct ca bng s v b i nhng ch s c s


ln xut hin
l mt s chn: Ct 1 b ch s 1, Ct 2 b ch s 2 v 9, Sau khi
b, cc ct cn li
ch s c s ln xut hin l mt s l.
1
2
3
4
5
9
8
7
6
1
2
3
4
5
1
4
5
9
8
7
6

Ta c s c bit : 145.
Ta c mt thut ton c th nh sau: Dng mng 610 phn t lu
thng tin
xut hin ca cc ch s t 0 n 9 cc ct t 1 n 6 (do cc s
c gi tr trong on

Blog Thut ton

[0,65535] nn c nhiu nht 6 ct). Phn t (k,x) lu s ln xut


hin ca ch s x ti ct th k.
c t file INP ln lt N s, vi mi s, tng s ln xut hin cc
ch s ct tng ng bng cch thay i mng 610. Sau da vo
mng lu s ln xut hin ny tm ra s c bit.
Cch lm trn kh hay nhng vi d liu ln th chng trnh chy

rt lu. Vic kt hp x l bt vo thut ton gip chng trnh


chy nhanh hn nhiu.
Cch th hai: Da vo t tng ca cch lm trn, ta c th chuyn
mi s v dng nh
phn v cng sp vo bng nh trn, Thc hin php XOR ca s th 1
vi s th 2, ri ly kt qu thc hin tip vi s th 3 c lm
nh vy cho n khi thc hin ht php XOR vi s th N. V php XOR
tng ng vi vic loi tr 2 bit ging nhau nn sau khi thc hin
xong, kt qu cho ta nhng bit c s ln xut hin l s l v
cng l dy bit ca s c bit cn tm.
X:=0;
For i:=1 to N do
Begin
Readln(fi,y);
x := x xor y;
End;
Writeln(x);
Bi ton:

Bn c th (CHESSCBG)

Mt bn c th l mt bng gm 4 dng, 4 ct. Mi th c l mt cch


sp xp 8
qun c, hai qun khc nhau hai khc nhau. Bi ton t ra l

Blog Thut ton

cho hai th c 1 v 2,
hy tm mt s t nht bc di chuyn qun chuyn t th 1 sang
th 2; mt bc di
chuyn qun l mt ln chuyn qun c sang trng k cnh vi
qun c ang ng.
D liu: CHESSCBG.INP

Gm 8 dng, mi dng l mt xu nh phn di 4 m s 1/0 tng


ng vi v tr c hoc khng c qun c.
Bn dng u l th c 1
Bn dng sau l th c 2.
Kt qu:

CHESSCBG.OUT

Gm 1 dng duy nht l s bc chuyn qun t nht


V d:
CHESSCBG.INP
1111
0000
1110
0010
1010
0101
1010
0101
CHESSCBG.OUT
4
Gi : M ha mi trng thi bn c bng 1 dy nh phn 16 bit tng
ng. S dng phng php loang tm ng i ngn nht t trng
thi u v trng thi cui.

Blog Thut ton

Luyn tp:
Bi ton:

Tm dng c bit(SLINE)

Cho mt tp vn bn c n dng (n<=100000) mi dng c di khng


qu 255 k t. Trong c mt dng ch xut hin mt ln duy nht,
cn

cc dng cn li c s ln xut hin l mt s chn.

Yu cu:

hy vit chng trnh tm dng c bit .

D liu: SLINE.INP
Ghi cc dng thng tin v kt thc tp bi dng gm 3 k t ###
Kt qu: SLINE.OUT
Ghi ra dng c bit tm c.

V d:
SLINE.INP
-How are you?
-Im fine
-How are you?
-My name is PCM
-Im fine###
SLINE.OUT
-My name is PCM

You might also like