You are on page 1of 7

Phn 24: Hm Bits v Bytes Arduino

Bits v Bytes

lowByte()

highByte()

bitRead()

bitWrite()

bitSet()

bitClear()

bit()

1/ lowByte() :
Gii thiu
lowByte() l hm tr v byte cui cng (8 bit cui cng) ca mt chui cc
bit. Mt s nguyn bt k cng c xem nh l mt chui cc bit, v bt k s
nguyn no cng c th biu din h nh phn di dng cc bit 0 v 1.
Lu :
lowByte() khng nhn gi tr thuc kiu d liu s thc. Bn s gp li bin
dch nu c lm iu ny.

C php
lowByte([gi tr cn ly ra 8 bit cui]);

Tr v
byte

V d
int A = lowByte(0B11110011001100); //A = 0B11001100 = 204;

int B = lowByte(511);
int C = lowByte(5);

//B = lowByte(0B111111111) = 255;


//C = lowByte(0B00000101) = 0B101 = 5;

2/highByte() :
Gii thiu
highByte() l hm tr v mt chui 8 bit k vi 8 bit cui cng ca mt chui
cc bit. Nh vy, nu d liu a vo mt chui 16bit thhighByte() s tr v
8 bit u tin, nu d liu a vo l mt chui 8bit hoc nh
hn, highByte() s tr v gi tr 0. Mt s nguyn bt k cng c xem nh l
mt chui cc bit, v bt k s nguyn no cng c th biu din h nh
phn di dng cc bit 0 v 1.
Lu :
highByte() khng nhn gi tr thuc kiu d liu s thc. Bn s gp li bin
dch nu c lm iu ny.

C php
highByte([gi tr a vo]);

Tr v
byte

V d
int A = highByte(0B1111111100000000); //A = 0B11111111 = 255;
int B = highByte(0B10101010);

//B = 0

int C = highByte(0B110000000011111111) //C = 0B00000000 = 0


int D = highByte(1023);

//D = highByte(0B111111111) = 0B11 = 3

3/ bitRead() :
Gii thiu
bitRead() s tr v gi tr ti mt bit no c xc nh bi ngi lp trnh
ca mt s nguyn.

C php
bitRead(x, n)

Tham s
x: mt s nguyn thuc bt c kiu s nguyn no
n: bit cn c. Cc bit s c tnh t phi qua tri, v s th t u tin l s
0

Tr v
Gi tr ca 1 bit (1 hoc l 0)

V d
bitRead(B11110010,0); // tr v 0
bitRead(B11110010,1); // tr v 1
bitRead(B11110010,2); // tr v 0

//Hm bitRead c th vit nh sau


B11110010 >> 0 & 1 // = 0
B11110010 >> 1 & 1 // = 1
B11110010 >> 2 & 1 // = 0

4/ bitWrite() :
Gii thiu
bitWrite() s ghi bit ti mt v tr xc nh ca s nguyn.

C php
bitWrite(x, n, b)

Tham s
x: mt s nguyn thuc bt c kiu s nguyn no
n: v tr bit cn ghi. Cc bit s c tnh t phi qua tri, v s th t u tin
l s 0.
b: 1 hoc 0

Tr v
khng

V d
bitWrite(B11110010,0,1); // B11110011
bitWrite(B11110010,1,0); // B11110000
bitWrite(B11110010,2,1); // B11110110

//Hm bitWrite c th vit nh sau


B11110010 | (1 << 0) // = B11110011
B11110010 & ~(1 << 1) // = B11110000

B11110010 | (1 << 2) // = B11110110

5/ bitSet() :
Gii thiu
bitSet() s thay gi tr ti mt bit xc nh ca mt s nguyn thnh 1.

C php
bitSet(x, n)

Tham s
x: mt s nguyn thuc bt c kiu s nguyn no
n: v tr bit cn ghi. Cc bit s c tnh t phi qua tri, v s th t u tin
l s 0.

Tr v
khng

V d
bitSet(B11110010,0); // B11110011
bitSet(B11110010,2); // B11110110

//Hm bitSet c th vit nh sau


B11110010 | (1 << 0) // = B11110011
B11110010 | (1 << 2) // = B11110110

6/ bitClear() :
Gii thiu
bitClear() s thay gi tr ti mt bit xc nh ca mt s nguyn thnh 0.

C php
bitClear(x, n)

Tham s
x: mt s nguyn thuc bt c kiu s nguyn no
n: v tr bit cn ghi. Cc bit s c tnh t phi qua tri, v s th t u tin
l s 0.

Tr v
khng

V d
bitClear(B11110010,1); // B11110000

//Hm bitClear c th vit nh sau


B11110010 & ~(1 << 1) // = B11110000

7/ bit() :
Gii thiu
Tr v mt s nguyn dng 2n (2 m n).

C php
bit(n)

Tham s
n: s nguyn

Tr v
mt s nguyn

V d
bit(0); // 2^0 = 1
bit(1); // 2^1 = 2
bit(2); // 2^2 = 4
bit(8); // 2^8 = 256

// cng c th vit nh sau


1 << 0 // = 1
1 << 1 // = 2
1 << 2 // = 4
1 << 8 // = 256

You might also like