Tải bản đầy đủ (.pdf) (111 trang)

Giáo trình kiến trúc máy tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.33 MB, 111 trang )

TRƢỜNG ĐẠI HỌC QUẢNG BÌNH
KHOA KỸ THUẬT – CÔNG NGHỆ THÔNG TIN

GIÁO TRÌNH
(Lƣu hành nội bộ)

“KIẾN TRÚC MÁY TÍNH”
(Dành cho Đại học Công nghệ thông tin)

Tác giả: ThS. Nguyễn Nƣơng Quỳnh

Năm 2015


MỤC LỤC

CHƢƠNG 1 GIỚI THIỆU CHUNG ............................................................................................... 3
1. Máy tính và phân loại máy tính ............................................................................................... 3
2. Kiến trúc máy tính ................................................................................................................... 4
3. Các thế hệ của máy tính ........................................................................................................... 6
CHƢƠNG 2 HỆ THỐNG MÁY TÍNH ......................................................................................... 30
1. Các thành phần cơ bản của máy tính ..................................................................................... 30
2. Các hoạt động của máy tính ................................................................................................... 33
3. Liên kết hệ thống ................................................................................................................... 36
CHƢƠNG 3 BỘ XỬ LÝ TRUNG TÂM ...................................................................................... 46
1. Cấu trúc cơ bản của CPU ....................................................................................................... 46
2. Tập lệnh của CPU .................................................................................................................. 55
3. Hoạt động của CPU ............................................................................................................... 63
4. Cấu trúc chung của các bộ xử lý tiên tiến .............................................................................. 67
5. Kiến trúc Intel ........................................................................................................................ 68
CHƢƠNG 4 BỘ NHỚ MÁY TÍNH .............................................................................................. 71


1. Tổng quan về hệ thống nhớ ................................................................................................... 71
2. Bộ nhớ bán dẫn ...................................................................................................................... 74
3. Bộ nhớ chính .......................................................................................................................... 77
4. Bộ nhớ đệm nhanh (CACHE) ................................................................................................ 78
5. Bộ nhớ ngoài .......................................................................................................................... 81
6. Hệ thống nhớ dung lƣợng lớn: RAID .................................................................................... 92
CHƢƠNG 5 HỆ THỐNG VÀO-RA ............................................................................................. 96
1. Tổng quan về hệ thống vào-ra ............................................................................................... 96
2. Các phƣơng pháp điều khiển vào-ra .................................................................................... 100
3. Bộ xử lý vào-ra .................................................................................................................... 108
4. Nối ghép với thiết bị ngoại vi .............................................................................................. 108

TÀI LIỆU THAM KHẢO ................................................................................................ 111
2


CHƢƠNG 1
GIỚI THIỆU CHUNG

1. Máy tính và phân loại máy tính
1.1. Máy tính
Máy tính hay máy tính điện tử là thiết bị điện tử cho phép lƣu trữ và xử lý thông tin
một cách tự động theo một chƣơng trình định trƣớc mà con ngƣời không cần can thiệp
vào trong quá trình xử lý.
Máy tính có khả năng lƣu trữ một khối lƣợng thông tin rất lớn trên một diện tích
nhỏ, tốc độ xử lý thông tin nhanh chóng và chính xác. Máy tính đƣợc lắp ráp từ vài mạch
tích hợp (IC) bao gồm bộ vi xử lý, bộ nhớ và các mạch giao tiếp vào ra, gọi là máy vi
tính.
1.2. Phân loại máy tính
Thông thƣờng máy tính đƣợc phân loại theo tính năng kỹ thuật và giá tiền.

a. Các siêu máy tính (Super Computer): là các máy tính đắt tiền nhất và tính năng kỹ
thuật cao nhất. Giá bán một siêu máy tính từ vài triệu USD. Các siêu máy tính thƣờng là
các máy tính vectơ hay các máy tính dùng kỹ thuật vô hƣớng và đƣợc thiết kế để tính toán
khoa học, mô phỏng các hiện tƣợng. Các siêu máy tính đƣợc thiết kế với kỹ thuật xử lý
song song với rất nhiều bộ xử lý (hàng ngàn đến hàng trăm ngàn bộ xử lý trong một siêu
máy tính), có khả năng thực hiện các phép tính cơ bản trong vài pico giây.
b. Máy tính lớn (Mainframe) : có khả năng giải những bài toán lớn, tốc độ tính toán
nhanh. Kích thƣớc bộ nhớ làm việc lớn. Đƣợc dùng cho các ứng dụng quản lý, quân sự và
đƣợc dùng trong khoa học để mô phỏng nghiên cứu các hiện tƣơng vật lý nhƣ các vụ nổ
hạt nhân. Dùng kỹ thuật xử lý song song và có hệ thống vào ra mạnh. Giá một máy tính
lớn có thể từ vài trăm ngàn USD đến hàng triệu USD.

3


c. Máy tính mini (Minicomputer): Là loại máy cở trung, giá thành thấp hơn máy tính
lớn, tính năng mạnh nên máy tính mini đƣợc ƣa dùng trong nghiên cứu khoa học, giá một
máy tính mini có thể từ vài chục USD đến vài trăm ngàn USD.
d. Máy vi tính (Microcomputer): là loại máy tính dùng bộ vi xử lý làm cốt lõi, vi
điều khiển. Tốc độ phát triển các vi xử lý 32 bit và 64 bit hiện đại làm khoảng cách giữa
máy tính lớn và máy vi tính ngày càng thu hẹp. Giá một máy vi tính có thể từ vài trăm
USD đến vài ngàn USD.
2. Kiến trúc máy tính
2.1. Kiến trúc máy tính
Để tìm hiểu kiến trúc máy tính, cần phân biệt rõ sự khác nhau cơ bản, thuộc về
nguyên lý giữa kiến trúc (architecture) và cấu trúc (organization & structure) của một
máy tính:
- Kiến trúc máy tính nghiên cứu những thuộc tính của một hệ thống mà ngƣời lập
trình có thể nhìn thấy đƣợc, những thuộc tính quyết định trực tiếp đến việc thực thi một
chƣơng trình tính toán, xử lý dữ liệu.

- Cấu trúc máy tính nghiên cứu về các thành phần chức năng và sự kết nối giữa
chúng để tạo nên một máy tính, nhằm thực hiện những chức năng và tính năng kỹ thuật
của kiến trúc.
Những thuộc tính liên quan đến kiến trúc bao gồm tập lệnh cơ bản mà CPU có thể
thực hiện, số bit đƣợc sử dụng để biểu diễn các loại dữ liệu khác nhau, cơ chế nhập/xuất
dữ liệu, và các kỹ thuật đánh địa chỉ ô nhớ, v.v... Cấu trúc máy tính lại bao gồm các thuộc
tính kỹ thuật mà ngƣời lập trình không nhận biết đƣợc nhƣ các tín hiệu điều khiển, giao
diện giữa máy tính và thiết bị ngoại vi, công nghệ xây dựng bộ nhớ, v.v…
Chẳng hạn việc quyết định máy tính có cần một lệnh cơ bản để thực hiện phép nhân
hay không là vấn đề về kiến trúc. Còn thể hiện lệnh nhân bằng các đơn vị vật lý cụ thể
nào (chẳng hạn, một đơn vị thuộc phần cứng đặc biệt, hay thực hiện lặp nhiều phép cộng)
lại là vấn đề về cấu trúc.
Để làm ví dụ minh họa sự khác biệt đó ta có thể xem các máy tính ở Trung tâm
nghiên cứu nào đó. Các máy tính này có thể có kiến trúc rất giống nhau theo quan điểm
của ngƣời lập trình. Chúng có cùng số thanh ghi (tức là thiết bị lƣu trữ tạm thời), có cùng
4


một tập lệnh cơ bản và dạng các toán hạng đƣợc nạp vào bộ nhớ giống nhau. Tuy nhiên
các hệ thống này khác nhau về mặt cấu trúc: số bộ vi xử lý khác nhau, kích thƣớc bộ
nhớ của chúng cũng khác hẳn nhau, cách thức dữ liệu đƣợc truyền từ bộ nhớ đến bộ vi xử
lý cũng không giống nhau.
Kiến trúc máy tính thƣờng đƣợc ứng dụng trong khoảng thời gian dài, hàng chục
năm; trong khi cấu trúc thƣờng thay đổi cùng với sự phát triển của công nghệ. Trên cùng
một kiến trúc, các hãng chế tạo máy tính có thể đƣa ra nhiều loại máy tính khác nhau về
cấu trúc, do đó các đặc trƣng về hiệu suất, giá thành cũng khác nhau. Các sản phẩm của
IBM là một ví dụ điển hình. Kiến trúc máy tính của IBM vẫn còn đƣợc ứng dụng cho tới
ngày nay và là ngọn cờ của thƣơng hiệu IBM.
Ngƣời lập trình thƣờng cần đến kiến thức về kiến trúc, nó có thể giúp ngƣời lập trình
nhận biết khi nào chƣơng trình của mình tạo ra chạy chƣa đạt hiệu suất tối đa của hệ

thống, hiểu đƣợc các kỹ năng làm tăng hiệu suất chƣơng trình, v.v.
Kiến trúc máy tính bao gồm ba phần: Kiến trúc phần mềm, tổ chức của máy tính và
lắp đặt phần cứng.
- Kiến trúc phần mềm của máy tính chủ yếu là kiến trúc phần mềm của bộ xử lý, bao
gồm: tập lệnh, dạng các lệnh và các kiểu định vị.
+ Trong đó, tập lệnh là tập hợp các lệnh mã máy (mã nhị phân) hoàn chỉnh có thể
hiểu và đƣợc xử lý bới bộ xử lý trung tâm, thông thƣờng các lệnh trong tập lệnh đƣợc
trình bày dƣới dạng hợp ngữ. Mỗi lệnh chứa thông tin yêu cầu bộ xử lý thực hiện, bao
gồm: mã tác vụ, địa chỉ toán hạng nguồn, địa chỉ toán hạng kết quả, lệnh kế tiếp (thông
thƣờng thì thông tin này ẩn).
+ Kiểu định vị chỉ ra cách thức thâm nhập toán hạng.
Kiến trúc phần mềm là phần mà các lập trình viên hệ thống phải nắm vững để việc
lập trình hiểu quả, ít sai sót.
- Phần tổ chức của máy tính liên quan đến cấu trúc bên trong của bộ xử lý, cấu trúc
các bus, các cấp bộ nhớ và các mặt kỹ thuật khác của máy tính.
- Lắp đặt phần cứng của máy tính ám chỉ việc lắp ráp một máy tính dùng các linh
kiện điện tử và các bộ phận phần cứng cần thiết.
5


Ta nên lƣu ý rằng một vài máy tính có cùng kiến trúc phần mềm nhƣng phần tổ chức
và lắp đặt phần cứng là khác nhau.
2.2. Kiến trúc tập lệnh
Kiến trúc tập lệnh của máy tính bao gồm:
- Tập lệnh: là tập hợp các chuỗi số nhị phân mã hoá cho các thao tác mà máy tính có
thể thực hiện đƣợc.
- Các kiểu dữ liệu: là các kiểu dữ liệu mà máy tính có thể xử lý.
2.3. Tổ chức của máy tính
Các thành phần cơ bản của máy tính:
- Bộ xử lý trung tâm (Central Processing Unit): Điều khiển hoạt động của máy tính

và xử lý dữ liệu.
- Bộ nhớ chính (Main Memory): Chứa các chƣơng trình và dữ liệu đang đƣợc sử
dụng.
- Hệ thống vào ra (Input/Output System): Trao đổi thong tin giữa máy tính với bên
ngoài.
- Liên kết hệ thống (System Interconnection): Kết nối và vận chuyển thông tin giữa
các thành phần của máy tính với nhau.
3. Các thế hệ của máy tính
Sự phát triển của máy tính đƣợc mô tả dựa trên sự tiến bộ của các công nghệ chế tạo
các linh kiện cơ bản của máy tính nhƣ: bộ xử lý, bộ nhớ, các ngoại vi,…Ta có thể nói máy
tính điện tử số trải qua năm thế hệ liên tiếp. Việc chuyển từ thế hệ trƣớc sang thế hệ sau
đƣợc đặc trƣng bằng một sự thay đổi cơ bản về công nghệ.
3.1. Thế hệ 1: Máy tính dùng đèn điện tử
Về kỹ thuật : Linh kiện dùng đèn điện tử, độ tin cậy thấp, tổn hao năng lƣợng lớn.
Tốc độ tính toán từ vài nghìn đến vài trăm nghìn phép tính/giây.
Về phần mềm : Chủ yếu sử dụng ngôn ngữ máy để lập trình.
6


Về ứng dụng : Mỗi máy tính đƣợc một nhóm ngƣời thực hiện tất cả từ thiết kế, xây
dựng lập trình , thao tác đến quản lý. Mục đích chủ yếu là phục vụ nghiên cứu khoa học
kỹ thuật.

Hình 1: Máy tính dùng đèn điện tử đầu tiên ENIAC
ENIAC (Electronic Numerical Integrator and Computer) là máy tính điện tử số đầu
tiên do Giáo sƣ Mauchly và ngƣời học trò Eckert tại Đại học Pennsylvania thiết kế vào
năm 1943 và đƣợc hoàn thành vào năm 1946. Đây là một máy tính khổng lồ với thể tích
dài 20 mét, cao 2,8 mét và rộng vài mét. ENIAC bao gồm: 18.000 đèn điện tử, 1.500 công
tắc tự động, cân nặng 30 tấn, và tiêu thụ 140KW giờ. Nó có 20 thanh ghi 10 bit (tính toán
trên số thập phân). Có khả năng thực hiện 5.000 phép toán cộng trong một giây. Công

việc lập trình bằng tay bằng cách đấu nối các đầu cắm điện và dùng các ngắt điện.
3.2. Thế hệ 2: Máy tính dùng transistor
Công ty Bell đã phát minh ra transistor vào năm 1947 và do đó thế hệ thứ hai của
máy tính đƣợc đặc trƣng bằng sự thay thế các đèn điện tử bằng các transistor lƣỡng cực.
Máy tính ở thế hệ này có các đặc điểm sau :
Về kỹ thuật : Linh kiện chủ yếu là transistor. Bộ nhớ có dung lƣợng khác lớn. Kích
thƣớc máy tính giảm, rẻ tiền hơn, tiêu tốn năng lƣợng ít.
7


Về phần mềm : Ngôn ngữ cấp cao xuất hiện nhƣ FORTRAN năm 1956, COBOL
năm 1959, ALGOL năm 1960 và hệ điều hành kiểu tuần tự (Batch Processing) đƣợc
dùng. Trong hệ điều hành này, chƣơng trình của ngƣời dùng thứ nhất đƣợc chạy, xong
đến chƣơng trình của ngƣời dùng thứ hai và cứ thế tiếp tục.
Về ứng dụng : tham gia giải các bài toán kinh tế xã hội.

Hình 2: Máy tính thế hệ thứ hai
3.3. Thế hệ 3: Máy tính dùng mạch tích hợp SSI, MSI và LSI
Thế hệ thứ ba đƣợc đánh dấu bằng sự xuất hiện của các mạch kết (mạch tích hợp IC: Integrated Circuit). Các mạch kết độ tích hợp mật độ thấp (SSI: Small Scale
Integration) có thể chứa vài chục linh kiện và kết độ tích hợp mật độ trung bình (MSI:
Medium Scale Integration) chứa hàng trăm linh kiện trên mạch tích hợp. Mạch in nhiều
lớp xuất hiện, bộ nhớ bán dẫn bắt đầu thay thế bộ nhớ bằng xuyến từ. Máy tính đa chƣơng
trình và hệ điều hành chia thời gian đƣợc dùng.
Máy tính ở thế hệ này có các đặc điểm sau :
Về kỹ thuật: Linh kiện chủ yếu sử dụng các mạch tích hợp (IC), các thiết bị ngoại vi
đƣợc cải tiến, đĩa từ đƣợc sử dụng rộng rãi. Tốc độ tính toán đạt vài triệu phép toán trên
giây, dung lƣợng bộ nhớ đạt vài MB.

8



Về phần mềm: Xuất hiện nhiều hệ điều hành khác nhau, xử lý song song. Phần mềm
đa dạng, chất lƣợng cao, cho phép khai thác máy tính theo nhiều chế độ khác nhau.
Về ứng dụng: Tham gia vào nhiều lĩnh vực của xã hội.

Hình 3: Máy thế hệ thứ ba UNIVAC
3.4. Thế hệ 4: Máy tính dùng mạch tích hợp VLSI
Thế hệ thứ tƣ đƣợc đánh dấu bằng các IC có mật độ tích hợp cao (LSI: Large Scale
Integration) có thể chứa hàng ngàn linh kiện. Các IC mật độ tích hợp cỡ lớn (VLSI: Very
Large Scale Integration) có thể chứa hơn 10 ngàn linh kiện trên mạch. Hiện nay, các chip
VLSI chứa hàng triệu linh kiện. Tốc đọ đạt tời hang chục triệu phép tính trên giây.
Với sự xuất hiện của bộ vi xử lý (microprocessor) chứa cả phần thực hiện và phần
điều khiển của một bộ xử lý, sự phát triển của công nghệ bán dẫn các máy vi tính đã đƣợc
chế tạo và khởi đầu cho các thế hệ máy tính cá nhân.
Các bộ nhớ bán dẫn, bộ nhớ cache, bộ nhớ ảo đƣợc dùng rộng rãi. Các kỹ thuật cải
tiến tốc độ xử lý của máy tính không ngừng đƣợc phát triển: kỹ thuật ống dẫn, kỹ thuật vô
hƣớng, xử lý song song mức độ cao,…
Về ứng dụng: máy tính đƣợc ứng dụng trong hầu hết các lĩnh vực của xã hội.
3.5. Thế hệ 5:
Các nhà sản xuất đã nghiên cứu chế tạo ra các máy tính mô phỏng các hoạt động của
con ngƣời, có trí khôn nhân tạo với khả năng tự suy diễn phát triển các tình huống nhận
đƣợc và giải quyết đƣợc các yêu cầu đa dạng.
9


Ngƣời Nhật đã và đang đi tiên phong trong các chƣơng trình nghiên cứu để cho ra
đời thế hệ thứ 5 của máy tính, thế hệ của những máy tính thông minh, dựa trên các ngôn
ngữ trí tuệ nhân tạo nhƣ LISP và PROLOG,... và những giao diện ngƣời - máy thông
minh. Đến thời điểm này, các nghiên cứu đã cho ra các sản phẩm bƣớc đầu và gần đây
nhất (2004) là sự ra mắt sản phẩm ngƣời máy thông minh gần giống với con ngƣời nhất:

ASIMO (Advanced Step Innovative Mobility: Bƣớc chân tiên tiến của đổi mới và chuyển
động). Với hàng trăm nghìn máy móc điện tử tối tân đặt trong cơ thể, ASIMO có thể
lên/xuống cầu thang một cách uyển chuyển, nhận diện ngƣời, các cử chỉ hành động, giọng
nói và đáp ứng một số mệnh lệnh của con ngƣời. Thậm chí, nó có thể bắt chƣớc cử động,
gọi tên ngƣời và cung cấp thông tin ngay sau khi bạn hỏi, rất gần gũi và thân thiện.
Hiện nay có nhiều công ty, viện nghiên cứu của Nhật thuê Asimo tiếp khách và
hƣớng dẫn khách tham quan nhƣ: Viện Bảo tàng Khoa học năng lƣợng và Đổi mới quốc
gia, hãng IBM Nhật Bản, Công ty điện lực Tokyo.
Hãng Honda bắt đầu nghiên cứu ASIMO từ năm 1986 dựa vào nguyên lý chuyển
động bằng hai chân. Cho tới nay, hãng đã chế tạo đƣợc 50 robot ASIMO.
Các tiến bộ liên tục về mật độ tích hợp trong VLSI đã cho phép thực hiện các mạch
vi xử lý ngày càng mạnh (8 bit, 16 bit, 32 bit và 64 bit với việc xuất hiện các bộ xử lý
RISC năm 1986 và các bộ xử lý siêu vô hƣớng năm 1990). Chính các bộ xử lý này giúp
thực hiện các máy tính song song với từ vài bộ xử lý đến vài ngàn bộ xử lý.
4. Biểu diễn dữ liệu và số học máy tính
Các máy tính xử lý các thông tin số và chữ. Các thông tin đƣợc biểu diễn dƣới dạng
mã nhất định. Bản chất vật lý của việc biểu diễn thông tin là điện áp (“0” ứng với không
có điện áp, “1” ứng với điện áp ở mức quy chuẩn trong mạch điện tử) và việc mã hoá các
thông tin số và chữ đƣợc tuân theo chuẩn quốc tế. Mã hiệu để mã hoá các thông tin cho
máy tính xử lý là các giá trị của biến nhị phân "0" hoặc "1", tƣơng ứng với biến logic
"False" hoặc "True". Một biến chỉ nhận một trong hai giá trị duy nhất là “0” hoặc “1”
đƣợc gọi là một bit (Binary Digit). Hai trạng thái này của bit, thực chất là các giá trị
tƣơng ứng với "False" hoặc "True", hay trạng thái "tắt" hoăc "đóng" của một công tắc
điện, đƣợc sử dụng để mã hoá cho tất cả các ký tự (gồm số, chữ và các ký tự đặc biệt
khác). Các bit đƣợc ghép lại thành các đơn vị mang thông tin đầy đủ - các mã tự - cho
các ký tự biểu diễn các số, các ký tự chữ và các ký tự đặc biệt khác.
10


4.1. Các hệ đếm cơ bản

1. Hệ thập phân
Từ xa xƣa con ngƣời đã sử dụng công cụ tự nhiên và sẵn có nhất của mình để đếm
các vật, đó là các ngón tay trên hai bàn tay của mình. Vì hai bàn tay chỉ có 10 ngón nên
hệ đếm thập phân mà chúng ta sử dụng ngày nay là kết quả tự nhiên của cách đếm đó.
Trong hệ thập phân, 10 ký tự khác nhau đƣợc dùng để biểu đạt 10 giá trị riêng biệt
(0, 1, 2, 3, 4, 5, 6, 7, 8 và 9). Để biểu diễn các số lớn hơn 10, hệ đếm thập phân sử dụng
kí pháp vị trí. Theo kí pháp này giá trị mà kí hiệu biểu diễn phụ thuộc vào vị trí của nó
trong dãy kí hiệu. Ví dụ 2 trong số 29 biểu diễn số 20, nhƣng trong 92 biểu diễn số 2.
Cũng cần nhắc lại rằng: tất cả các hệ đếm đều tuân thủ ký pháp vị trí.
Những con số này còn đƣợc dùng cùng với dấu thập phân - ví dụ dấu "phẩy" - để
định vị phần thập phân sau hàng đơn vị. Con số còn có thể đƣợc dẫn đầu bằng các ký hiệu
"+" hay "-" để biểu đạt số dƣơng và số âm.
Quy tắc biểu diễn tổng quát một số tự nhiên trong hệ thập phân là

Ví dụ:
Với các số thập phân chúng ta sử dụng lũy thừa âm của 10 với quy tắc tƣơng tự:
Ví dụ: 457.65 = 4x102 + 5x101 + 7x100 +6x10-1 + 5x10-2
Trong đó phần nguyên:

457 : 10 = 45 dƣ 7
45 : 10 = 4 dƣ 5
4 : 10 = 0 dƣ 4

Ta lấy số dƣ từ dƣới lên ta có đƣợc phần nguyên là 457
Phần thập phân:

0.65 x 10 = 6.5 phần nguyên bằng 6
0.5 x 10 = 5.0 phần nguyên bằng 5

Đối với phần thập phân lấy phần nguyên từ trên xuống ta đƣợc phần thập phân là

0.65
11


2. Hệ nhị phân
Máy tính số đƣợc xây dựng từ các mạch điện tử. Các mạch điện tử trong máy
tính phân biệt đƣợc sự khác nhau giữa hai trạng thái (có dòng điện hay không, điệp áp cao
hay thấp, v.v.) và biểu diễn các trạng thái đó dƣới dạng một trong hai số 1 hoặc 0. Vì vậy
các số 0 và 1 rất thích hợp và đủ để biểu diễn các số tùy ý trong máy tính.
Các số 0 và 1 đƣợc gọi là các số nhị phân. Hệ đếm nhị phân là hệ đếm chỉ dùng các
số 0 và 1 và kí pháp vị trí để biểu diễn các số. Các vị trí có trọng số bằng bậc luỹ thừa của
cơ số 2. Chấm cơ số đƣợc gọi là chấm nhị phân trong hệ đếm cơ số 2. Mỗi một con số nhị
phân đƣợc gọi là một bit (Binary digit), bit ngoài cùng bên trái là bit có trong số lớn nhất
(MSB – Most Significant Bit) và bit ngoài cùng bên phải là bit có trọng số nhỏ nhất (LSB
– Least Significant Bit).
A = anan-1…a1a0.a-1…a-m

Số nhị phân có dạng:

Giá trị của A đƣợc tính nhƣ sau:
A = an2n + an-12n-1 + … + a121 + a020 + a-12-1 + … + a-m2-m
A 

n

a

i  m

Ví dụ:


23 22 21 20
MSB 1

i

2i

2-1 2-2

0

1 0 . 1 1 LSB
Chấm nhị phân
Số nhị phân (1010.11)2 có thể biểu diễn thành:
(1010.11)2 = 1*23 + 0*22 + 1*21 + 0*20 + 1*2-1 + 1*2-2 = (10.75)10.
Chú ý: Dùng dấu ngoặc đơn và chỉ số dƣới để ký hiệu cơ số của hệ đếm.
* Biến đổi từ nhị phân sang thập phân
Ví dụ: Bíên đổi số nhị phân (11001)2 thành số thập phân:
Trọng số vị trí: 24 23 22 21 20
Giá trị vị trí: 16 8 4 2 1
Số nhị phân: 1 1 0 0 1
Số thập phân: 1*24 + 1*23 + 0*22 + 0*21 + 1*20 = (25)10
* Biến đổi từ thập phân sang nhị phân:
Để thực hiện việc đổi từ thập phân sang nhị phân, ta áp dụng phƣơng pháp chia lặp
nhƣ sau: Lấy số thập phân chia cho cơ số để thu đƣợc một thƣơng số và số dƣ. Số dƣ
12


đƣợc ghi lại để làm một thành tố của số nhị phân. Sau đó số thƣơng lại đƣợc chia cho cơ

số một lần nữa để có thƣơng số thứ hai và số dƣ thứ hai. Số dƣ thứ hai là một con số nhị
phân thứ hai. Quá trình tiếp diễn cho đến khi số thƣơng bằng 0.
Ví dụ: Biến đổi số thập phân (29)10 thành nhị phân:
29/2 = 14 dƣ 1(LSB)
14/2 = 7 dƣ 0
7/2 = 3 dƣ 1
3/2 = 1 dƣ 1
1/2 = 0 dƣ 1(MSB)
Cuối cùng ta có số (29)10 đƣợc biến đổi sang nhị phân là:
(29)10 = (11101)2
Đối với phần lẻ của các số thập phân, số lẻ đƣợc nhân với cơ số và số nhớ đƣợc ghi
lại làm một số nhị phân. Trong quá trình biến đổi, số nhớ đầu chính là bit MSB và số nhớ
cuối là bit LSB.
Việc chuyển đổi số nguyên thập phân sang nhị phân ta có 2 phƣơng pháp:
- Phƣơng pháp 1: Chia dần cho 2 rồi lấy phần dƣ
Ví dụ 1: Đổi (23.375)10 sang nhị phân.
Chúng ta sẽ chuyển đổi phần nguyên dùng phƣơng thức số dƣ:

Phƣơng thức nhân để biến đổi phần lẻ của số thập phân sang nhị phân

13


Ví dụ 2 : Biến đổi số thập phân (0.625)10 thành nhị phân:
0.625*2 = 1.250. Số nhớ là 1
0.250*2 = 0.500. Số nhớ là 0
0.500*2 = 1.000. Số nhớ là 1
Vậy : (0.625)10 = (0.101)2.
Tuy nhiên, trong việc biến đổi phần lẻ của một số thập phân sang số nhị phân theo
phƣơng thức nhân, có một số trƣờng hợp việc biến đổi số lặp lại vô hạn.

Ví dụ 3:

- Phƣơng pháp 2: Phân tích thành tổng các 2i
Ví dụ: Chuyển đổi (105)10 thành số nhị phân
105 = 64 + 32 + 8 + 1 = 26 + 25 + 23 + 20
27

26

25

24

23

22

21

20

128

64

32

16

8


4

2

1

14


0

1

1

0

1

0

0

1

Kết quả là (105)10 = (01101001)2
* Các phép toán dùng trong hệ nhị phân:
Phép tính dùng trong hệ nhị phân cũng tƣơng tự nhƣ các phép tính đƣợc áp dụng
trong các hệ khác. Tính cộng, tính trừ, tính nhân và tính chia cũng có thể đƣợc áp dụng

với các giá trị số nhị phân.
Tính cộng
Phép tính đơn giản nhất trong hệ nhị phân là tính cộng. Cộng hai đơn vị trong hệ nhị
phân đƣợc làm nhƣ sau:
A

B

A+B

0

0

0

0

1

1

1

0

1

1


1

10 (nhớ 1 lên hàng thứ 2)

Cộng hai số "1" với nhau tạo nên giá trị "10", tƣơng đƣơng với giá trị 2 trong hệ
thập phân. Điều này xảy ra tƣơng tự trong hệ thập phân khi hai số đơn vị đƣợc cộng vào
với nhau. Nếu kết quả bằng hoặc cao hơn giá trị gốc (10), giá trị của con số ở hàng tiếp
theo đƣợc nâng lên:
5 + 5 = 10
7 + 9 = 16
Hiện tƣợng này đƣợc gọi là "nhớ" hoặc "mang sang", trong hầu hết các hệ thống số
dùng để tính, đếm. Khi tổng số vƣợt lên trên gốc của hệ số, phƣơng thức làm là "nhớ" một
sang vị trí bên trái, thêm một hàng. Phƣơng thức "nhớ" cũng hoạt động tƣơng tự trong hệ
nhị phân:
1 1 1 1 1 (nhớ)
0 1 1 0 1
+ 1 0 1 1 1
1

0

0

1

Tính trừ
Phép tính trừ theo quy chế tƣơng tự:
15

0


0


A

B

A–B

0

0

0

0

1

-1 (mƣợn)

1

0

1

1


1

0

Một đơn vị nhị phân đƣợc trừ với một đơn vị nhị phân khác nhƣ sau:
1

*
1

1

0

0

*
1

*
1

*
1

0

1

0


1

1

1

1

0

1

1

1

(hình sao * đánh dấu các cột phải mƣợn)
Trừ hai số dƣơng cũng tƣơng tự nhƣ "cộng" một số âm với giá trị tƣơng đồng của
một số tuyệt đối; máy tính thƣờng dùng ký hiệu Bù 2 để diễn đạt số có giá trị âm. Ký hiệu
này loại trừ đƣợc nhu cầu bức thiết phải có một phƣơng pháp làm phép trừ biệt lập. Xin
xem thêm chi tiết trong chƣơng mục Bù 2.
Tính nhân
Phép tính nhân trong hệ nhị phân cũng tƣơng tự nhƣ phƣơng pháp làm trong hệ thập
phân. Hai số A và B đƣợc nhân với nhau bởi những tích số cục bộ: với mỗi con số ở B,
tích của nó với số một con số trong A đƣợc tính và viết xuống một hàng mới, mỗi hàng
mới phải chuyển dịch vị trí sang bên trái, hầu cho con số cuối cùng ở bên phải đứng cùng
cột với vị trí của con số ở trong B đang dùng. Tổng của các tích cục bộ này cho ta kết quả
tích số cuối cùng.
Vì chỉ có 2 con số trong hệ nhị phân, nên chỉ có 2 kết quả khả quan trong tích cục

bộ: + Nếu con số trong B là 0, tích cục bộ sẽ là 0
+ Nếu con số trong B là 1, tích cục bộ sẽ là số ở trong A
Ví dụ, hai số nhị phân 1011 và 1010 đƣợc nhân với nhau nhƣ sau:

+

+
0

1
0
16

1

0

1

1

0

1

0
0
0

0

1
0

0
1

1 (
A)
0 (
B)
0


+

1

0

1

1

1

1

0

1


1

1

0

Tính chia
Tính chia nhị phân cũng tƣơng tự nhƣ phép chia trong hệ thập phân.
1

1

0

1

1

1

0

1

Ở đây ta có số chia là 1012, hoặc 5 trong số thập phân, và số bị chia là 110112, hoặc
27 trong số thập phân. Cách làm tƣơng tự với cách làm trong số thập phân. Ở đây số chia
1012 có thể chia đƣợc với 3 số đầu của số bị chia, tức là 1102, đƣợc 1, viết lên trên hàng
kẻ. Kết quả này đƣợc nhân với số chia, và tích số đƣợc trừ với 3 số đầu của số bị chia. Số
tiếp theo là một con số 1 đƣợc hạ xuống để tạo nên một dãy số có 3 con số, tƣơng tự với

số lƣợng các con số của số chia:
1 1 0 1 1 1 0 1
1

0

1

1

0 1 1
Quy luật trên đƣợc lặp lại với những hàng số mới, tiếp tục cho đến khi tất cả các
con số trong số bị chia đã đƣợc dùng hết:
1
1
0
1
1

0

1

0
0

1
0

1

0

-

1
1

1
0

1

1

0

1

1

0

1

1
1

1
0
Phân số của 110112 chia cho 1012 là 1012, nhƣ liệt kê phía trên đƣờng kẻ, trong khi

số dƣ còn lại đƣợc viết ở hàng cuối là 102. Trong hệ thập phân, 27 chia cho 5 đƣợc 5, dƣ
2.
3. Hệ thập lục phân (hệ mười sáu)
Dữ liệu số trong máy tính đƣợc biểu diễn theo hệ đếm nhị phân. Từ nhớ cơ bản
của các loại máy tính đều tuân thủ chuẩn của IBM, nghĩa là theo từng Byte. Mỗi Byte
gồm 8 bit nhị phân. Tuy nhiên, cách viết một số liệu nhị phân không thích hợp với chách
nhìn và nhận biết độ lớn, nhất là khi dữ liệu là một số có độ dài nhiều Byte. Do vậy, ta
hay sử dụng các phƣơng pháp biểu diễn theo hệ đếm Hexa (hệ đếm cơ số 16). Các hệ máy
tính hiện đại thƣờng dùng một hệ đếm khác là hệ thập lục phân.
17


Trong toán học và trong khoa học máy tính, hệ thập lục phân (hay hệ đếm cơ số
16, tiếng Anh: hexadecimal), hoặc chỉ đơn thuần gọi là thập lục, là một hệ đếm có 16 ký
tự, từ 0 đến 9 và A đến F (chữ hoa và chữ thƣờng nhƣ nhau).

Hệ thập lục phân
* Biến đổi thập lục phân sang thập phân
Các số thập lục phân có thể biên đổi thành thập phân bằng cách tính tổng của các
con số nhân với giá trị vị trí của nó.
Ví dụ: Biến đổi các số (5B)16, (2AF)16 thành thập phân.
Số (5B)16 có

Số thập lục phân:

5

B

Trọng số vị trí:


161

160

Giá trị vị trí:

16

1

Số thập phân:

5x16 + Bx1 = (91)10

Số (2FB)16

Số thập lục phân:

2

A

F

Trọng số vị trí:

162

161


160

Giá trị vị trí:

256

16

1

Số thập phân:

2x256 + Ax16 + Fx1 = (687)10
18


* Biến đổi thập phân thành thập lục phân
Để biến đổi các số thập phân thành thập lục phân, ta sử dụng phƣơng pháp chia lặp,
với cơ số 16.
Ví dụ: Biến đổi số (1776)10 thành thập lục phân.
1776/16 = 111 + 0 (LSB).
111/16 = 6 + 15 hoặc F.
6/16

= 0 + 6 (MSB).
Số thập lục phân: (6F0)16.

* Biến đổi thập lục phân thành nhị phân
Các số thập lục phân rất dễ dàng để đổi thành số nhị phân vì thực ra số thập lục phân

cũng là một cách biểu diễn các số nhị phân thuận lợi hơn mà thôi. Để đổi các số thâp lục
phân thành nhị phân, chỉ cần thay thế một cách đơn giản từng con số thập lục phân bằng
bốn bit nhị phân tƣơng ứng của nó.
Ví dụ: Đổi số thập lục phân (6F0)16 thành số nhị phân:
6

F

0

0110

1111

0000

=> (6F0)16 = (011011110000)2
* Biến đổi nhị phân thành thập lục phân
Để biến đổi một số nhị phân thành số thập lục phân tƣơng ứng thì chỉ cần gộp lại
thành từng nhóm gôm 4 bit nhị phân, bắt đầu từ dấu chấm nhị phân.
Ví dụ: Biến đổi số nhị phân (1111101000010000)2 thành thập lục phân.
1111 1010 0001 0000
Tƣơng ứng là

F

A

1


0

=> (1111101000010000)2 = (FA10)16
19


4.2. Biểu diễn giá trị số trong máy tính
Trong máy tính các số đƣợc biểu diễn bằng dãy các số nhị phân, ví dụ 1910 =
100112. Mỗi số nhị phân trong dãy biểu diễn này đƣợc gọi là bit. Nhƣ vậy bit chỉ có thể
nhận một trong hai giá trị "0" hoặc "1". Bit là đơn vị cơ bản nhất, nhỏ nhất để biểu diễn
dữ liệu trong máy tính.
1. Số nguyên không dấu
Tất cả các số cũng nhƣ các mã trong máy tính đều đƣợc biểu diễn bằng các chữ số
nhị phân. Để biểu diễn các số nguyên không dấu ngƣời ta dung n bit. Tƣơng ứng với độ
dài của số bit đƣợc sử dụng, ta có khoảng giá trị xác định nhƣ sau:
Nguyên tắc tổng quát biểu diễn số nguyên không dấu là dung n bit biểu diễn số
nguyên không dấu A: an-1an-2….a2a1a0
Giá trị của A đƣợc tính theo công thức:

A 

n

a

i  m

i

2i


Dãi biểu diễn của A từ 0 đến 2n-1
Số bit

Khoảng giá trị

N

0 .. 2n – 1

8

0 .. 255

Byte

16

0 .. 65535

Word

Ví dụ: Biểu diến số nguyên không dấu sau bằng 8 bit: A = 41; B = 150
Ta có: A = 41 = 32 + 8 + 1 = 25 + 23 + 20
=> 41 = 0010 1001
B = 150 = 128 + 16 + 4 + 2 = 27 + 24 + 22 + 21
=> 150 = 1001 0110
Ví dụ: Có các số nguyên không dấu M, N đƣợc biểu diễn bằng 8 bit nhƣ sau:
M = 0001 0010;


N = 1011 1001
20


Hãy xác định giá trị của chúng?
Ta có: M = 0001 0010 = 24 + 21 = 16 + 2 = 18
N = 1011 1001 = 27 + 25 + 24 + 23 + 20 = 128 + 32 + 16 + 8 + 1 = 185
2. Số nguyên có dấu
Với 7 bit ta chỉ biểu diễn đƣợc các số từ 0 = 00000002 đến 11111112 (= 12710). Để
biểu diễn đƣợc các giá trị âm từ -127 đến 0, tức từ -11111112 đến 00000002, ta cần sử
dụng thêm 1 bit để đánh dấu. Đây là bit thứ 8, gọi là bit dấu và nằm ở vị trí cao nhất (bên
trái) trong số nhị phân. Theo quy ƣớc chung số dƣơng có bit dấu là 0, số âm có bit dấu là
1.
Khoảng giá trị đƣợc biểu diễn sẽ đƣợc tính nhƣ sau:
Số bit

Khoảng giá trị

N

2n-1-1

8

-128 .. 127

Short integer

16


-32768.. 32767

Integer

32

-231.. 231-1

Long integer

(-2147483648.. 2147483647)
a) Số bù một và số bù hai:
Giả sử A là một số nhị phân, ta có:
- Số bù một của A nhận đƣợ bằng cách đảo giá trị các bit của A
- Số bù 2 của A = Số bù 1 của A + 1
Ví dụ1: với n = 8 bit
Ta có

A=

0010 0101

Số bù 1 của

A=

1101 1010
+

1

21


Số bù 2 của

A=

1101 1011

Vì A + số bù 2 của A = 0 -> dung số bù 2 để biểu diễn số âm.
Vậy để biểu diễn số nguyên có dấu ta có dạng tổng quát:
+ Biểu diễn số dƣơng A: 0an-2…a2a1a0

A

n2

a
i 0

i

2i

biểu diễn cho số dƣơng từ 0 đến 2n-1-1
+ Biểu diễn số âm A: 1an-2…a2a1a0

A  2

n 1


n2

  ai 2i
i 0

biểu diễn cho số âm từ -1 đến -2n-1
Vậy ta có: Dạng số nguyên A = an-1an-2…a2a1a0 đƣợc xác định nhƣ sau:

A  an 1 2

n 1

n2

  ai 2i
i 0

biểu diễn từ -(2n-1) đến +(2n-1-1)
Ví dụ: Biểu diễn các số nguyên có dấu sau bằng 8 bit:
Ta có:

A = +58

=

0011 1010

B = -80
+80


= 0101 0000

Số bù 1

= 1010 1111
+

Số bù 2

1

= 1011 0000

Vậy -80 = 1011 0000
22

A = +58; B = -80


Ví dụ: Hãy xác định giá trị của các số nguyên có dấu đƣợc biểu diễn nhƣ sau:
M = 0110 0010;

N = 1101 1011

Ta có: M = 0110 0010 = 64 + 32 + 2 = +98
N = 1101 1011 = -128 + 64 + 16 + 8 + 2 + 1 = -37
Với n = 8 bit biểu diễn đƣợc các giá trị từ -128 đến +127
0000 0000 = 0


1000 0000 = -128

0000 0001 = +1

1000 0001 = -127

0000 0010 = +2





1111 1110 = -2

0111 1111 = +127

1111 1111 = -1

Chú ý: +127 + 1 = -128 và -128 – 1 = +127 do hiện tƣợng tràn xảy ra
b) Chuyển đổi từ byte sang word:
Đối với số dƣơng:
Ví dụ: +19 =

0001 0011

(8bit)

+19 = 0000 0000 0001 0011

(16 bit)


Đối với số âm:
Ví dụ: -19 =

1110 1101

(8 bit)

-19 = 1111 1111 1110 1101

(16 bit)

c) Biểu diễn số nguyên theo mã BCD
BCD – Binary Coded Decimal Code
Dùng 4 bit để mã hoá cho các chữ số thập phân từ 0 đến 9:
0: 0000

5: 0101

23


1: 0001

6: 0110

2: 0010

7: 0111


3: 0011

8: 1000

4: 0100

9: 1001

Ví dụ:
35

0011 0101 (BCD)

62

0110 0010

1245

0001 0010 0100 0101

8791

1000 0111 1001 0001

3. Biểu diễn số thực
Khi biểu diễn các số rất lớn hoặc rất nhỏ ngƣời ta thƣờng dùng ký pháp dấu
chấm động. Ví dụ 190000=0.49*106, 0.00023=0.23*10-3. Dạng biểu diễn tổng quát:
N = m.Re
Trong đó: m là phần định trị, e là phần mũ, R là cơ số của hệ đếm.

Ví dụ: Trong hệ thập phân, số 25410 có thể biểu diễn dƣới các dạng sau:
254 * 100; 25.4 * 101; 2.54 * 102; 0.254 * 103; 0.0254 * 104; …
Trong hệ nhị phân, số (0.00011)2 có thể biểu diễn dƣới các dạng : 0.00011; 0.00011
0

* 2 ; 0.0011 * 2-1; 0.011 * 2-2; 0.11 * 2-3; 1.1 * 2-4
Trong máy tính số biểu diễn theo dấu chấm động có hai dạng:
+ Dạng đơn giản
Số dấu chấm động đƣợc lƣu dƣới dạng 32 bit:

24


Bit đầu tiên là bit dấu, 8 bit tiếp theo là số nguyên nhị phân biểu diễn số mũ, 23 bit
cuối cùng là số nhị phân biểu diễn phần sau dấu chấm nhị phân. Cơ số ở đây là 2 và phần
định trị có dạng 1.F
+ Dạng chính xác gấp đôi
Số dấu chấm động đƣợc lƣu dƣới dạng 64 bit:

Ví dụ 1: tính số thực:
1) 1100 0001 0101 0110 0000 0000 0000 0000
S = 1 do đó đây là số âm
e = 1000 0010 = 130 → E = 130 – 127 = 3
Vậy X = -1.10101100*23 = -1101.011 = -13.375
2)

0100 0010 1000 1100 1110 1001 1111 1100

Phần mũ: 27+22+20 =133 Giá trị thực: 133-127=6
Phần định trị:

2-4+2-5+2-8+2-9+2-10+2-12+2-15+2-16+2-17+2-18+2-19+2-20+2-21= 0,1008906.
Giá trị ngầm định: 1,1008906.
Dấu: 0 = số dƣơng
Giá trị số thực là: R = 1,1008906.26 = 70,457.
Ví dụ 2: Biểu diễn số thực (9,75)10 dƣới dạng dấu phẩy động.
Ta đổi sang dạng nhị phân: (83,75)10 = (1010011.11)2 = 1.01001111E6
Bit dấu là bit 31 bằng 0
Mã excess – 127 của 6 là: 127 + = 133 = (10000101)2
25


×