Hệ đếm (hoặc hệ cơ số) là một hệ thống dùng để thể hiện các chữ số. Đây là một hệ thống các ký hiệu toán học để thể hiện các số của một tập hợp số, bằng cách sử dụng các chữ số hoặc các ký hiệu một cách nhất quán.
Cách biểu diễn số nguyên, số thực trong máy tính
Biểu diễn số nguyên
Một byte biểu diễn được số nguyên trong phạm vi (-127) đến (127).
Biểu diễn số thực
Dùng dấu chấm (.) để ngăn cách giữa phần nguyên và phần phân. Mọi số thực đều có thể biểu diễn dưới dạng (±M) x (10^{±K}))(dạng dấu phẩy động).Ví dụ, số nguvên (1105 = 0.1105×104)
Đổi hệ cơ số 10 sang hệ cơ số 2
1. Cách 1 :
- Chia lặp đi lặp lại số đó cho 2. Phép chia dừng lại khi kết quả lần chia cuối cùng bằng 0.
- Lấy các số dư theo chiều đảo ngược sẽ được số nhị phân cần tìm.
2. Cách 2:
- Phân tích số đó thành tổng của các số (2^{i})
Đổi hệ cơ số 10 sang hệ cơ số 16
Cơ số (16) được tạo thành từ (16) chữ số bao gồm: (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F). (Trong đó (A) -> (F) tương đương từ (10) -> (15)) :
- Tương tự như cách đổi từ hệ cơ số 10 sang hệ cơ số 2 ta cứ thực hiện phép chia đến khi số đó bằng 0.
- Lấy các số dư theo chiều đảo ngược sẽ được số thập lục phân cần tìm.
Đổi hệ cơ số 10 sang hệ cơ số khác (tổng quát)
Dựa vào 2 cách chuyển từ hệ cơ số 10 sang hệ cơ số 2 và 16 thì ta có thể suy ra cách đổi từ hệ cơ số 10 sang các hệ cơ số khác như sau :
- Ta cứ chia số đó cho cơ số chúng cần tìm đến khi số đó bằng (0)
- Sau đó ta sẽ lấy số dư theo chiều đảo ngược thì sẽ được số cần tìm.
Đổi hệ cơ số khác sang hệ cơ số 10
Dạng tổng quát của một số trong hệ đếm có cơ số (r) là: ((. . .a_2a_1a_0)_r)
- giá trị của chữ số (a_i) là (1) số nguyên trong khoảng (0 < a_i < r)
Khi ta cần đổi số đó về hệ cơ số (10) ta chỉ cần lấy (a_i * r^{i – 1})
Vd:
- (1011_2 = 1 * 2^{3} + 0 * 2^{2} + 1 * 2^{1} + 1 * 2^{0} = 13)
- (1234_8 = 1 * 8^{3} + 2 * 8^{2} + 3 * 8^{1} + 4 * 8^{0} = 668)
- (1C5_16 = 1 * 16^{2} + C * 16^{1} + 5 * 16^{0} = 501)
Đổi từ hệ cơ số 2 sang hệ cơ số 16 và ngược lại
1. Cách 1:
- Đổi từ hệ nhị phân sang thập phân, rồi từ hệ thập phân sang hệ thập lục phân như cách bên trên mình trình bày với hệ nhị phân (muốn từ nhị phân sang thập lục phân ta phải đổi trung gian qua hệ thập phân)
2. Cách 2:
- Do mỗi chữ số của hệ thập lục phân được biểu diễn bằng 4 bit nhị phân, nên ta thường tính từ dấu ‘.’ nhóm thành 4 bit một rồi chuyển từ nhị phân sang thập lục phân theo 4 bit đó qua cách mình tra bảng dưới đây:
Ví dụ 1: (10010011_2 = X_16)
Theo cách 2 thì mình chia thành (4) bit một từ phải qua trái là: (0011) và (1001) ở đây (1001 = 9) và ( 0011 = 3) => (10010011_2 = 93_16)
Ví dụ 2: (1001111_2 = X_16)
Theo cách 2 thì mình chia thành (4) bit một từ phải qua trái là: (1111) và (100), ta thấy ở đây (100) chỉ có (3) bit nên ta phải thêm cho nó (1) bit để đủ (4) bit và chúng ta thêm ở đâu cho đủ? Ở đây ta thêm (1) bit (0) vào bên phải để cho giá trị (0100 = 100) rồi ta tiếp tục tra bảng. (0100 = 4) và (1111 = F) vậy (1001111_2 = 4F_16)
3. Ngược lại
Khi đổi (x) từ hệ cơ số (16) sang hệ cơ số (2) ta chỉ cần phân tích mỗi chữ số trong (x) ở hệ cơ số (16) sang hệ cơ số (2) rồi ghép lại thì ta được số (x) ở hệ cơ số (2)
Ví dụ: (1E5_16 = X_2)
Ta có (1 = 0001), (E = 1110) và (5 = 0101) như hình bên trên. Do đó (1E5_16 = 111100101_2)
Đổi hệ cơ số 2 sang các hệ cơ số có dạng (2^{x}) và ngược lại
Theo cách đổi từ (2) sang (16) thì ta sẽ gộp theo nhóm. Mỗi nhóm sẽ chứa (x) phần tử và đổi nó sang hệ cơ số (2^{x}) sau đó gộp kết quả của các nhóm lại.
Ví dụ : (11001_2 = X_8)
Ta thấy (8 = 2^{3}) => Ta sẽ gộp (3) phần tử vào thành (1) nhóm. (011 = 3) và (001 = 1) . Do đó (11001_2 = 31_8)
Ngược lại
Tương tự như hệ cơ số (16) chuyển sang hệ cơ số (2) ta sẽ chuyển mỗi kí tự ở trong số x ở dạng hệ cơ số (2^{x}) sang hệ nhị phân rồi ghép chúng lại với nhau.
Ví dụ (743_8 = X_2)
Ta thấy (7 = 111), (4 = 100) và (3 = 011) => (743_8 = 111100011_2)
Luyện tập
Đây là một số bài tập luyện tập trong sách Competitive Programming Basic của Code Dream, đăng ký mua ngay để được luyện tập nhiều dạng bài về thuật toán khác, chấm bài online tại http://oj.codedream.edu.vn