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ân | Thập Phân | |||
1 1 1 0 | 14 | |||
+ | 1 1 0 1 | 13 | ||
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= | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Giá trị của bit | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
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à:
OR | Khi một trong hai Bit là 1 thì kết quả là 1 | 1 0 1 0 OR 0 1 1 0 = 1 1 1 0 |
AND | Chỉ khi cả hai Bit đều là 1 thì kết quả là 1 | 1 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à 1 | 1 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 comments:
Post a Comment