Thứ Hai, 14 tháng 5, 2012

Tìm hiểu về Hệ thống số nhị phân(bibary)

Hệ thống số ta dùng hằng ngày là Thập Phân (Decimal). Thập là 10, có nghĩa là ta dùng 10 dấu hiệu khác nhau để viết một con số. Khi đếm từ 0 đến 9 ta viết ra liên tục các dấu hiệu 0,1,2,3,4,5,6,7,8,9. Đến đây, nếu tiếp tục đếm tiếp ta sẽ không còn dấu hiệu nào nữa. Do đó ta dùng lại số 0 và bắt đầu hàng chục như 10,11,12,13 ..v.v cho đến 19 rồi tăng hàng chục lên nữa thành 20,21,22, .vv. Hãy xem con số 7354. Con số nầy biểu diển ( 7*1000 + 3*100 + 5*10 + 4 ) đơn vị. Lưu ý hàng đơn vị, hàng chục, hàng trăm và hàng ngàn. Ngàn có nghĩa là 10 lũy thừa 3, trăm có nghĩa là 10 lũy thừa 2, chục có nghĩa là 10 lũy thừa 1 và đơn vị có nghĩa là 10 lũy thừa 0 (nhớ rằng 10 lũy thừa 0 thì bằng 1). Nói một cách khác nếu ta đi dọc theo con số từ phải qua trái thì lũy thừa 10 (còn gọi là base 10 của thập phân) tăng lên từ từ.

Trong hệ thống số Nhị Phân (Binary) ta chỉ dùng có hai dấu hiệu 0 và 1 để viết ra một con số. Nếu ta đếm từ 0 đến 1 thì đã dùng hết các dấu hiệu rồi. Nếu muốn tiếp tục đếm ta phải dùng lại dấu hiệu 0 và bắt đầu hàng hai, tức là con số hai trong hệ thống Nhị Phân được viết là 10. Như thế trong Nhị Phân con số 1111 biểu diển ( 1*8 + 1*4 + 1*2 + 1 ) đơn vị, trong đó ta biết rằng 8 có nghĩa là 2 lũy thừa 3, 4 có nghĩa là 2 lũy thừa 2, 2 có nghĩa là 2 lũy thừa 1 và đơn vị có nghĩa là 2 lũy thừa 0.

Ngược lại, để đổi một số Thập Phân ra Nhị Phân ta tìm cách trừ ra những multiple của 8,4,2, .v.v. Thí dụ bắt đầu từ số 75 Thập Phân, ta trừ 64 (tức là 2 lũy thừa 6) ra sẽ còn lại 11, kế đó trừ 8, rồi trừ 2 như trong bảng dưới đây:


75 - 64 = 11
11 - 8 = 3
3 - 2 = 1
Vậy 75 = 1*64 + 0*32 + 0*16 + 1*8 + 0*4 + 1*2 + 1
Do đó 75 (Thập Phân) = 1 0 0 1 0 1 1 (Nhị Phân)

Cách cộng hai con số Nhị Phân cũng tương tợ như trong hệ thống Thập Phân, tức là ta dùng cách đếm. Trong thực tế ta có thể đổi hai con số Nhị Phân ra Thập Phân, cộng hai con số ấy trong hệ thống Thập Phân rồi đổi kết quả ra Nhị Phân trở lại.
Thí dụ:
Nhị PhânThập Phân
1 1 1 014
+1 1 0 113
27= 1 1 0 1 1

Ghi chú: 27 = 16 + 8 + 2 + 1 = 1*16 + 1*8 + 0*4 + 1*2 + 1

Muốn làm toán trừ thì ta đếm ngược thay vì đếm xuôi.
Một Byte thì có 8 bits. Mỗi Byte có thể có giá trị từ 0 đến 255. Con số 255 Thập Phân thì bằng 11111111 Nhị phân . Vì số Nhị Phân rất dài và khó nhận diện nên người ta thường gom từng nhóm 4 bits thành một số trong hệ thống Thập Lục Phân (Hexadecimal). Đó là vì 2 lũy thừa 4 thì bằng 16. Trong hệ thống Thập Lục Phân ta dùng 16 dấu hiệu khác nhau: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Con số Nhị Phân 11111111 thì bằng FF trong Thập Lục Phân. muốn đổi một số Thập Phân ra Nhị Phân ta có thể đổi nó ra Thập Lục Phân trước rồi biến mỗi con số Thập Lục Phân ra 4 bits.

Thí dụ: 237 Thập Phân (237= 14*16 + 13) đổi ra ED Thập Lục Phân, rồi E (nhớ là E = 14 Thập Phân) ra1110 và D (nhớ là D = 13 Thập Phân) ra 1101.

Để phân biệt các bits trong một Byte, ta gọi Least Significant Bit (LSB) là Bit0 và Most Significant Bit (MSB) là Bit7.
Ta nói trong con số Hex FF tất cả các bits đều bằng 1 hay đều set.


Thí dụ:
Số Thập Lục Phân B7=10110111
Bit76543210
Giá trị của bit1286432168421
Bạn nên học thuộc bảng giá trị của các bits trên đây. Ngoài ra hãy nhớ Bit8=256, số lớn nhất của Byte là 255.
Bit10 = 1024 (cở một Kílô).
Một số Nhị phân mà Bit0=0 thì chắc chắn là một số chẳn.
Số Nhị Phân thường được dùng trong các bài toán Luận Lý (Logical), số 1 được dùng biểu diễn giá trị True, số 0 cho False. Các Logical Operation thông dụng là:
ORKhi một trong hai Bit là 1 thì kết quả là 11 0 1 0 OR 0 1 1 0 = 1 1 1 0
ANDChỉ khi cả hai Bit đều là 1 thì kết quả là 11 0 1 0 AND 0 1 1 0 = 0 0 1 0
XOR(Exclusive OR)Khi hai Bit có giá trị đối nhau thì kết quả là 11 0 1 0 XOR 0 1 1 0 = 1 1 0 0

Con số Nhị Phân thứ nhì trong một Logical AND operation còn được gọi là MASK (mặt nạ) , ý nói chỉ bit nào của số Nhị Phân thứ nhì là 1 thì xuyên qua nó ta mới thấy cái bit (nằm cùng một vị trí) của số Nhị Phân thứ nhất . Thí dụ nếu MASK là 11000000 thì ta chỉ có thể thấy được Bit7 và Bit6 của số Nhị Phân thứ nhất, kết quả của Logical AND operation chắc chắn sẽ cho các bits 0 đến 5 đều bằng 0.

Một thí dụ MASKing là đổi một character từ lowercase ra uppercase. Ta biết Ascii value của "a" là Hex 61, còn Ascii value của "A" là Hex 41. Nếu ta apply lên character "a" cái MASK Hex 41, tức là 61 AND 41 = 41 (hay 01100001 AND 01000001 = 01000001 ). , nói một cách khác ta reset hay clear bit5 của "a", thì kết quả sẽ là "A".

Trong TCP/IP network configuration ta apply Subnet Mask lên IP address để nhận diện NetworkID.
Thí dụ: IP Address: 192.16.24.69 , Subnet Mask: 255.255.255.0 (hay FF.FF.FF.0). Do đó NetworkID=192.16.24.0


Trích từ: http://kenhdaihoc.com/forum/showthread.php?t=3871

0 nhận xét:

Đăng nhận xét