Professional Documents
Culture Documents
NHP MN LP TRNH
ng Bnh Phng
dbphuong@fit.hcmuns.edu.vn
CC K THUT
THAO TC TRN BIT
VC
&
BB
Ni dung
Cc ton t logic
Cc ng dng
Bi tp
VC
&
BB
n v o thng tin
K hiu
Gi tr
Byte
8 bit
KiloByte
KB
MegaByte
MB
GigaByte
GB
TeraByte
TB
PentaByte
PB
VC
&
BB
n v o thng tin
0
1 bit
2
1
2 bit
22
2
0
23
3 bit
n-1
n bit
2n
0000 1111 = 2n 1
NMLT - Cc k thut thao tc trn bit
VC
&
BB
c im
c lu trong cc thanh ghi hoc trong cc
nh. Thanh ghi hoc nh c kch thc 1
byte (8 bit) hoc 1 word (16 bit).
Biu din s nguyn khng du, s nguyn c
du, s thc v k t.
Hai loi bit c bit
msb (most significant bit): bit nng nht (bit n)
lsb (least significant bit): bit nh nht (bit 0)
NMLT - Cc k thut thao tc trn bit
VC
&
BB
c im
Biu din cc i lng lun dng.
V d: chiu cao, cn nng, m ASCII
Tt c bit c s dng biu din gi tr.
S nguyn khng du 1 byte ln nht l
1111 11112 = 28 1 = 25510.
S nguyn khng du 1 word ln nht l
1111 1111 1111 11112 = 216 1 = 6553510.
Ty nhu cu c th s dng s 2, 3 word.
lsb = 1 th s l s l s l.
NMLT - Cc k thut thao tc trn bit
VC
&
BB
c im
Lu cc s dng hoc m.
Bit msb dng biu din du
msb = 0 biu din s dng. VD: 0101 0011
msb = 1 biu din s m. VD: 1101 0011
VC
&
BB
S b 1 v s b 2
S 5 (byte)
S b 1 ca 5
S b 2 ca 5
+ S 5
Kt qu
VC
&
BB
Nhn xt
S b 2 ca x cng vi x l mt dy ton bit 0
(khng tnh bit 1 cao nht do vt qu phm
vi lu tr). Do s b 2 ca x chnh l gi tr
m ca x hay x.
i s thp phn m 5 sang nh phn?
i 5 sang nh phn ri ly s b 2 ca n.
VC
&
BB
Tnh gi tr c du v khng du
Tnh gi tr khng du v c du ca 1 s?
V d s word (16 bit): 1100 1100 1111 0000
S nguyn khng du ?
Tt c 16 bit lu gi tr.
=> gi tr l 52464.
S nguyn c du ?
Bit msb = 1 do s ny l s m.
=> ln l gi tr ca s b 2.
S b 2 = 0011 0011 0001 0000 = 13072.
=> gi tr l 13072.
NMLT - Cc k thut thao tc trn bit
10
&
VC
BB
Tnh gi tr c du v khng du
HEX
Khng du
C du
HEX
Khng du
C du
msb = 0
00
01
02
7E
7F
0
1
2
126
127
0
1
2
126
127
0000
0001
0002
7FFE
7FFF
0
1
2
32766
32767
0
1
2
32766
32767
msb = 1
80
81
FE
FF
128
129
254
255
128
127
2
1
8000
8001
FFFE
FFFF
32768
32769
65534
65535
32768
32767
2
1
11
VC
&
BB
Tnh gi tr c du v khng du
Nhn xt
msb=0 gi tr c du bng gi tr khng du.
msb=1 th gi tr c du bng gi tr khng
du tr 28=256 (byte) hay 216=65536 (word).
Tnh gi tr khng du v c du ca 1 s?
V d s word (16 bit): 1100 1100 1111 0000
Gi tr khng du l 52464.
Gi tr c du: v bit msb = 1 nn gi tr c du
bng 52464 65536 = 13072.
NMLT - Cc k thut thao tc trn bit
12
&
VC
BB
V d
int x = 2912, y = 1706, z = x & y;
15 14 13 12 11 10
&
0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0
0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0
544 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0
NMLT - Cc k thut thao tc trn bit
13
&
VC
BB
Ton t | (or)
|
V d
int x = 2912, y = 1706, z = x | y;
15 14 13 12 11 10
0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0
0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0
4074 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0
NMLT - Cc k thut thao tc trn bit
14
&
VC
BB
Ton t ^ (xor)
^
V d
int x = 2912, y = 1706, z = x ^ y;
15 14 13 12 11 10
0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0
0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0
3530 0 0 0 0 1 1 0 1 1 1 0 0 1 0 1 0
NMLT - Cc k thut thao tc trn bit
15
&
VC
BB
Ton t ~ (not)
~
V d
int x = 2912, z = ~x;
15 14 13 12 11 10
0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0
-2913 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1 1
16
VC
&
BB
11648
5824 0
0 0 0 1 0 1 1 0 1 1 0 0 0 0 0
17
VC
&
BB
1456
728 0
0 0 0 1 0 1 1 0 1 1 0 0 0 0 0
msb 0
NMLT - Cc k thut thao tc trn bit
18
VC
&
BB
Lu
Khng c nhm ln cc cc ton t trn bit
(&, |, ~) vi cc ton t kt hp (&&, || , !)
Cc ton t gp: &= |= ^= <<= >>=
My tnh lm vic trn bit nn cc thao tc
trn h nh phn s nhanh hn rt nhiu so
vi h khc.
Phi lun nh di ca dy bit ang lm
vic (8bit, 16bit, 32bit, 64bit, )
NMLT - Cc k thut thao tc trn bit
19
VC
&
BB
20
VC
&
BB
Bt bit th i ca bin n
i=9
15 14 13 12 11 10
ni | 0 = ni
ni | 1 = 1
8
| 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
n15 n14 n13 n12 n11 n10
n8 n7 n6 n5 n 4 n3 n2 n1 n0
21
VC
&
BB
Tt bit th i ca bin n
i=9
15 14 13 12 11 10
ni & 1 = ni
ni & 0 = 0
8
& 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
n15 n14 n13 n12 n11 n10
n8 n7 n6 n5 n 4 n3 n2 n1 n0
22
VC
&
BB
Ly gi tr bit th i ca bin n
i=9
15 14 13 12 11 10
n6 n5 n 4 n3 n2 n1 n0
& 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n9
23
VC
&
BB
Gn gi tr 0 cho bin n
ni ^ ni = 0
15 14 13 12 11 10
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
void setzero(int &n)
{
n = n ^ n;
}
NMLT - Cc k thut thao tc trn bit
24
VC
&
BB
Nhn n vi 2i
c im ton t <<
n = (nj2j) vi j [0, k] (k l ch s bit msb)
Dch tri i bit s m mi k s tng thm i
n << i = (nj2j+i) = 2i(nj2j) = 2in
Vy, dch tri i bit nhn vi 2i
int mul2powi(int n, int i)
{
return n << i;
}
NMLT - Cc k thut thao tc trn bit
25
VC
&
BB
Chia n vi 2i
c im ton t >>
n = (nj2j) vi j [0, k] (k l ch s bit msb)
Dch phi i bit s m mi k s gim i i
n << i = (nj2ji) = 2i(nj2j) = 2in = n/2i
Vy, dch phi i bit chia cho 2i
int div2powi(int n, int i)
{
return n >> i;
}
NMLT - Cc k thut thao tc trn bit
26
VC
&
BB
Bi tp thc hnh
27
VC
&
Bi tp thc hnh
BB
??? 0
1 1 1 0 0 0 1 1 1 0 0 0 0 1 0
28
VC
&
BB
Bi 3 (gi )
a
c }
c }
{ a
{ a
c }
{ a
{ a
c }
29