Trong cuộc sống hàng ngày chúng ta thường dùng các hệ cơ số 10 để biểu diễn các giá trị số. Điều này rất tự nhiên vì từ xa xưa con người bình thường đã biết dùng 10 ngón tay của mình để như là một công cụ tính toán sơ đẳng.
Trong thế giới máy tính thì khác, do máy tính được cấu tạo nên từ các mạch điện tử và các mạch này chỉ có hai có hai trạng thái có điện và không có điện. Do đó để biễu diễn một giá trị số trong máy tính người ta sử dụng hệ đếm cơ số hai hay hệ đếm nhị phân (Binary number system). Trong hệ đếm này chỉ tồn tại hai chữ số 0 và 1 tương ứng với hai trạng thái có điện và không có diện của các mạch điện tử.
Nếu dùng hệ cơ số hai để biểu diễn các số có giá trị lớn sẽ gặp bất tiện là số hệ hai thu được quá dài, thí dụ:
255 = 1111 1111
Để viết kết quả biễu diễn các số cho gọn lại người ta sử dụng các các hệ đếm khác như hệ cơ số 16 (thập lục, hexa) và hệ cơ số 8(bát phân). Bảng sau đây trình bày một số hệ đếm cơ bản:
Hệ đếm Cơ số Số kí số và kí tự Dạng kí số và kí tự
Nhị phân (Binary) 2 2 0,1
Bát phân (Octal) 8 8 0,1,2,3,4,5,6,7
Thập phân (Decimal) 10 10 0,1,2,3,4,5,6,7,8,9
Thập lục phân (Hexadecimal)
16 16 0,1,2,3,4,5,6,7,8,9
A,B,C,D,E,F Bảng 4.1. Các hệ đếm cơ bản
Ngoài ra, hệ đếm BCD còn được sử dụng để biểu diễn các số từ 0 đến 9 với 4 bit (4 bit=1 nibble) nhị phân.
4.6.2. Chuyển đổi số giữa các hệ đếm
4.6.2.1. Chuyển đổi giữa hệ thập phân và hệ nhị phân a. Chuyển từ hệ thập phân sang hệ nhị phân:
Quy tắc: Lấy phần nguyên chia cho 2 và ghi lại phần dư, tiếp tục lấy thương chia cho 2 và ghi lại phần dư. Tiếp tục làm như vậy cho đến khi thương bằng 0. Sau đó viết các số dư theo chiều từ phép chia cuối cùng đến phép chia đầu tiên. Thí dụ:
Hình 4.2.
Cách đổi một số hệ mười sang hệ hai Quy tắc đổi số thập phân hệ mười sang hệ hai: Lấp số cần đổi nhân với 2, tích gồm phần nguyên và phần lẻ. Lấy phần lẻ nhân tiếp với 2 cho đến khi nào tích thu được bằng 1 thì dừng lại. Chọn riêng phần nguyên của các tích thu được và viết theo thứ tự từ phép nhân đầu tiên đến phép nhân cuối cùng. Thí dụ:
Hìn h 4.3. Các đổi một số thập phân hệ mười sang hệ hai
b. Chuyển từ hệ nhị phân sang hệ thập phân:
,250 ,50 ,0 (0,125)10 = (0,001)2
0,125 x 2 = 0,250 x 2 = 0,50 x 2 =
0 0 1 (33)10 = (100001)2
0 1
1 2 0
2 2 0
4 2 0
8 2 0 16 2 1
2 33
Để chuyển từ hệ nhị phân sang thập phân ta tính tổng các tích số giữa các hệ số với các trọng số 2i tại từng vị trí thứ i.
Thí dụ:
(1110,11)2 = 1.23 + 1.22 + 1.21 + 0.20 + 1.2-1 + 1.2-2
= 8 + 4 + 2 + 0,5 + 0,25 = (14,75)10
4.6.2.2. Chuyển đổi giữa thập lục hoặc hệ bát phân sang hệ nhị phân
Quy tắc: Nhóm 4 bit (hoặc 3 bit cho hệ bát phân) bắt đầu từ bit ngoài cùng bên phải, tính gia trị số học theo quy luất giá trị riêng cho từng nhóm. Viết các giá trị này liên tiếp nhau.
Thí dụ:
Cho số nhị phân: 11110101 chuyển sang hệ thập lục và hệ bát phân như sau:
(11 110 101) à 3 6 5 à trong hệ bát phân là số 365 (1111 0101) à 15 5 à D5 à trong hệ thập lục là số D5 Khi cần chuyển ngược lại làm tương tự. Thí dụ:
(120)8 = (001 010 000)2 (120)16 = (0001 0010 0000)2 4.6.3. Các phép toán bit
4.6.3.1. Phép toán AND Kí hiệu: &
Ý nghĩa: Nhân logic trên các bit. Phép toán này thực hiện trên từng cặp bit tương ứng của các toán hạng theo quy tắc trong bảng sau:
A B A | B
0 0 0
0 1 0
1 0 0
1 1 1
Bảng 4-2. Bảng chân lý phép toán AND trên bit
4.6.3.2. Phép toán OR Kí hiệu: |
Ý nghĩa: Cộng logic trên các bit. Phép toán này thực hiện trên từng cặp bit tương ứng của các toán hạng theo quy tắc trong bảng sau:
A B A | B
0 0 0
0 1 1
1 0 1
1 1 1
Bảng 4-3. Bảng chân lý phép toán OR trên bit 4.6.3.3. Phép toán XOR
Kí hiệu: ^
Ý nghĩa: Phép cộng logic trên các bit. Thực hiện trên từng cặp bit tương ứng của các toán hạng theo quy tắc trong bảng sau.
A B A ^ B
0 0 0
0 1 1
1 0 1
1 1 0
Bảng 4-4. Bảng chân lý phép toán OR trên bit 4.6.3.4. Phép toán NOT
Kí hiêu: ~
Ý nghĩa: phép đảo bit, đổi các giá trị trong mỗi bit của toán hạng x từ 0->1, 1->0.
4.6.3.5. Phép toán dịch trái/phải
- x SHR i : Phép dịch phải, cho giá trị có được từ số nguyên x sau khi dịch sang phải i bit; các số 0 sẽ lấp đầy các kết quả bên trái nếu là số nguyên dương; nếu không phải là số nguyên dương thì số 1 sẽ lấp đầy các kết quả bên trái.
Thí dụ:
5 >> 2 = 1 ( 0101 >> 2 = 0001)
- x SHL i : Phép dịch trái, cho giá trị có được từ số nguyên x sau khi dịch sang trái i bit; các số 0 sẽ lấp đầy các kết quả ở bên phải.