Professional Documents
Culture Documents
● Hệ đếm không vị trí (hệ la mã,... trong bài viết này ta sẽ không nhắc tới)
● Hệ đếm có vị trí (hệ nhị phân, hệ thập phân, hệ thập lục phân,...)
1. Hệ số đếm có vị trí
Nguyên tắc chung
● Mỗi số được biểu diễn bằng một chuỗi các chữ số, trong đó số ở vị trí thứ i
có trọng số ri
● Dạng tổng quát của một số trong hệ đếm có cơ số r là: (. . .a 2a1a0.a-1a-2 . . .)r
o giá trị của chữ số ai là 1 số nguyên trong khoảng 0 < ai < r
Khi biểu diễn số ta thường thêm chỉ số để nhận biết chính xác hệ cơ số đang xét,
ví dụ: 1010, 102, 1016
● Lưu ý ở đây các hệ số bằng 0 chúng ta không cần viết vào cũng được
Ví dụ 1: Minh họa cách đổi 1110 sang nhị phân bằng cách 1
Ví dụ 2: Minh họa cách đổi 0.8110 sang nhị phân
Do 0.81 là một số vô tỉ nên ta không thể biết chính xác được số chữ số phía sau
dấu '.' nên ở đây kết quả ta lấy 6 số sau dấu '.'
Code C++ đổi phần nguyên từ thập phân sang nhị phân viết bằng đệ quy:
void DectoBin(int n) {
if(n!=0) {
DectoBin(n/2);
cout<<n%2;
}
}
● Không chỉ được dùng để biểu diễn các số nguyên mà còn là một biểu diễn
ngắn gọn để biểu diễn dãy số nhị phân bất kỳ
● Lý do sử dụng biểu diễn thập lục phân:
o Ngắn gọn hơn ký hiệu nhị phân
o Trong hầu hết máy tính, dữ liệu nhị phân chiếm theo bội của 4 bit,
tương đương với bội của một số thập lục phân duy nhất
o Rất dễ dàng chuyển đổi giữa nhị phân và thập lục phân
Cách chuyển từ nhị phân sang thập lục phân:
● Cách 1:
o Đổ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)
● Cách 2:
o 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: 100100112 = X16
Theo cách 2 thì ta chia thành 4 bit một từ phải qua trái là: 0011 và 1001 ở đây
1001 = 9 và 0011 = 3 => 100100112 = 9316
Ví dụ 2: 10011112 = X16
Theo cách 2 thì ta 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 trái để cho giá trị 0100 = 100 rồi ta tiếp
tục tra bảng. 0100 = 4 và 1111 = F vậy 10011112 = 4F16
Ví dụ 3: 1100.1012 = X16
Do ví dụ này có thêm dấu '.' vào nên chúng ta phải đổi riêng phần nguyên và phần
thập phân và cách đổi tương tự nhiên trên. Ta có phần nguyên là: 1100 2 = C16 và
phần thập phân là 101, khi này ta cần nhớ lại chữ số ngoài cùng bên phải là chữ
số ít quan trọng nhất vì vậy khi thêm 1 bit vào cho đủ 4 bit ta thêm bit 0 vào bên
phải của 101 tức là 1010 = A. Vậy 1100.1012 = C.A16
Tổng kết lại ở cách đổi này ta cần lưu ý khi đổi phần nguyên ta nhóm 4 bit một từ
phải qua trái tính từ dấu '.' khi thiếu bit ta thêm các bit vào bên trái cho đủ 4 bit
rồi tra bảng. Khi đổi phần thập phân ta nhóm 4 bit một nhưng bây giờ ta nhóm từ
trái qua phải tính từ dấu '.' và khi thiếu bit ta thêm các bit vào bên phải cho đủ 4
bit rồi tra bảng.
Chú ý
Có thể đổi từ nhị phân sang thập phân, từ thập phân sang nhị phân, từ thập lục
phân sang nhị phân bằng cách tra bảng. Nói một cách tổng quát đổi cho tất cả hệ
số nói chung: khi chuyển từ một hệ số bất kì qua hệ số 10 ta chỉ cần nhân với hệ
số đó mũ i (ví dụ từ hệ 2 sang hệ 10 nhân 2^i, từ hệ 16 sang hệ 10 nhân 16^i,...)
và khi chuyển từ hệ 10 sang các hệ số khác ta chia dư cho hệ đó (ví dụ từ hệ 10
sang hệ 2 ta chia 2, từ hệ 10 sang hệ 16 ta chia 16) Vậy nên khi chuyển từ hệ a
sang b ta cần phải thông qua hệ số 10.
Tài liệu tham khảo: Computer Organization and Architecture, 9th Edition
- AND: Phép toán này sẽ cho kết quả là 0 nếu 1 trong các đầu vào là 0.
+ Computer: AND.
+ AT89CXX: ANL.
+ AVR: AND. chỉ sử dụng đối với các thanh ghi của
AVR.
- OR: Phép toán này sẽ cho ra kết quả là 1 nếu 1 trong các ngõ vào là
1.
- NOT: Phép toàn này s cho ra kt qu ngc vi ngõ vào.
- XOR: Thuật toán này có công dụng để xác định hai bit giống nhau.
Nếu hai bit giống nhau sẽ cho kết quả là 0 còn khác nhau sẽ cho kết
quả là 1.
XOR: Giả sử p và q là hai mệnh đề. XOR của p và q là đúng nếu p đúng hoặc q đúng
nhưng không đúng cả hai và ngược lại. Nó được ký hiệu là p ⨁ q.
III. Thuật toán DES
1. Sơ đồ thuật toán
-Sơ đồ mã khoá
-Sơ đồ giải mã
- Sơ đồ hàm Feistel
2. Các bảng chuyển vị thay thế