You are on page 1of 17

I.

Cách Chuyển Đổi Các Hệ Số Đếm


Hệ đếm là một tập các kí tự (bảng chữ số) để biểu diễn các số và xác định
giá trị của các biểu diễn số.

Các hệ đếm thường gặp


Có 2 loại hệ đếm cơ bản mà chúng ta vẫn thường gặp là:

● 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

● Cơ số của hệ đếm r là số kí hiệu được dùng.


● Trọng số bất kì của một hệ đếm là ri (i có thể là số âm hoặc dương) giúp
phân biệt giá trị biểu diễn của các chữ số khác nhau.

● 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

Biểu diễn số tổng quát:

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

2. Hệ thập phân (Cơ số 10)


Hệ thập phân (hệ đếm cơ số 10) là hệ đếm dùng số 10 làm cơ số. Đây là hệ đếm
được sử dụng rộng rãi nhất trong các nền văn minh thời hiện đại.
Hệ gồm các chữ số 0,1,2,3,4,5,6,7,8,9 tạo nên.
Ví dụ:
33 = (3*10) + 3
5432 = (5*1000) + (4*100) + (3*10) + 2
Cơ số 10. Tức là, mỗi chữ số trong số được nhân với 10 mũ i, i tương ứng với vị
trí của chữ số đó:
3310 = 3*101 + 3*100
543210 = 5*103 + 4*101 + 3*101 + 2*100

Ví dụ biểu diễn số thực:


25.25610 = 2*101 + 5*100 + 2*10-1 + 5*10-2 + 6*10-3

● Chữ số ngoài cùng bên trái là chữ số quan trọng nhất


● Chữ số ngoài cùng bên phải là chữ số ít quan trọng nhất
● Lưu ý chữ số sau dấu '.' cũng được biểu diễn tương tự nhưng số mũ giảm
dần từ -1

3. Hệ nhị phân (Cơ số 2)


Hệ nhị phân (hay hệ đếm cơ số hai hoặc mã nhị phân) là một hệ đếm dùng hai ký
tự để biểu đạt một giá trị số, bằng tổng các lũy thừa của 2.

● Hai chữ số: 0 và 1


● Chữ số 1 và 0 trong ký hiệu nhị phân có cùng ý nghĩa như trong ký hiệu
thập phân:
o 02 = 010
o 12 = 110
● Biểu diễn số nhị phân:
● Ví dụ:
o 102 = 1*21 + 0*20 = 210
o 1012 = 1*22 + 0*21 + 1*20 = 510
o 100.101 = 1*22 + 0*21 + 0*20 + 1*2-1 + 0*2-2 + 1*2-3 = 4.62510

● Lưu ý ở đây các hệ số bằng 0 chúng ta không cần viết vào cũng được

Cách chuyển đổi nhị phân sang thập phân:


Nhân mỗi chữ số nhị phân với 2i và cộng vào kết quả
Cách chuyển đổi từ thập phân sang nhị phân:
Đổi riêng phần nguyên và phần Thập phân

● Phần nguyên thập phân sang nhị phân:


o 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.
o Cách 2:
▪ Phân tích số đó thành tổng của các số 2i

● Phần thập phân sang nhị phân: (đọc thêm)


o Nhân liên tiếp phần phân số của số thập phân với 2
o Lần lượt lấy phần nguyên của tích thu được sau mỗi lần nhân là kết
quả cần tìm.
o Lấy phần phân số của tích nhân làm số bị nhân trong bước tiếp
theo.

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 '.'

Ví dụ 3: Minh họa cách đổi 0.2510 sang nhị phân


Do 0.25 = 1/4 là một số hữu tỉ nên theo cách đổi trên ta hoàn toàn có thể xác định
được chính xác số chữ số sau dấu '.' và 0.2510 = 0.012

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;
}
}

4. Hệ thập lục phân (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
Biểu diễn thập lục phân:

● 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

II. Các phép toán logic cơ bản


Trong toán học, khi có hai số, người ta dùng các phép toán số học (cộng, trừ, nhân, chia,...)
tác động vào chúng để nhận được những số mới. Tương tự, khi có mệnh đề, người ta dùng
các phép logic tác động vào chúng để nhận được những mệnh đề mới. Dưới đây ta trình bày
định nghĩa và các tính chất cơ bản của các phép toán này.

- 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.

Phép phủ định (NOT)


Mệnh đề phủ định: Mệnh đề phủ định của mệnh dề a là mệnh đề có giá trị đối lập với mệnh đè
a, kí hiệu là —
Phủ định của mệnh đề a là một mệnh đề, là đúng khi a sai và sai khi a đúng.
Bảng giá trị chân lý của phép phủ định
a -a
1 0
0 1

Phép hội (AND)


Hội của hai mệnh đề a, b là một mệnh đề, đọc là a và b, ký hiệu a Λ b (hoặc a.b, \[a\intersec
b\]), đúng khi cả hai mệnh đề a, b cùng đúng và sai trong các trường hợp còn lại.
Bảng giá trị chân lý của phép hội
a b aΛb
1 1 1
1 0 0
0 1 0
0 0 0

Phép tuyển (OR)


Tuyển của hai mệnh đề a, b là một mệnh đề đọc là a hoặc b, ký hiệu là a ν b (hoặc a+b), sai
khi cả hai mệnh đề cùng sai và đúng trong trường hợp còn lại.
Bảng giá trị chân lý của phép tuyển
a b aνb
1 1 1
1 0 1
0 1 1
0 0 0

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ế

You might also like