Phép tính số học trên số nguyên dương Số học trong cơ số 2 hệ nhị phân có thể được thực hiện bằng cách sử dụng các kỹ thuật tương tự mà người sử dụng cho số học cơ sở cơ số 10 hệ thập ph
Trang 1TRƯỜNG ĐẠI HỌC XÂY DỰNG
BỘ MÔN CÔNG NGHỆ THÔNG TIN
Trang 2Chương 2 :
Dữ liệu quan đại diện và số học máy tính
2.1 Mục đích Trang 2
2.2 Từ điện tử đến Bits (BInary digiT) Trang 2
2.3 Đại diện nhị phân của số nguyên dương Trang 3
2.4 Phép tính số học trên số nguyên dương Trang 4
2.5 Số nguyên âm Trang 10
2.6 Số dấu phẩy động Trang 18
2.1 Mục đích
Chương này bao gồm các phương pháp phổ biến nhất mà người dùng máy tính hệ thống để đại diện cho dữ liệu như thế nào phép tính số học được thực hiện trên các đại diện Nó bắt đầu với một cuộc thảo luận về cách thức các số nguyên và dấu phẩy động số được đại diện là các trình tự của các bit
Sau khi đọc chương này, bạn nên :
1 Có một sự hiểu biết về cách thức đại diện cho dữ liệu máy tính nội bộ ở cả hai
mô hình thứ-bit và mức độ tín hiệu điện
2 Có thể dịch số nguyên, số dấu phẩy động và từ các đại diện nhị phân của chúng
3 Có thể thực hiện phép tính cơ bản (cộng, trừ, và nhân) về số nguyên, số dấu phẩy động
2.2 Từ điện tử đến Bits (BInary digiT)
Máy tính hiện đại là những hệ thống kĩ thuật số, có nghĩa là họ giải thích các tín hiệu điện là có một tập các giá trị rời rạc hơn là số lượng tương tự Trong khi điều này làm tăng số lượng các tín hiệu cần thiết để chuyển tải được thông tin,
nó làm cho lưu trữ thông tin dễ dàng hơn và làm cho hệ thống kỹ thuật số ít bị nhiễu điện hơn so với các hệ thống tương tự
Trang 3Hình 2.1 – Lập bản đồ điện áp cho Bit
2.3 Đại diện nhị phân của số nguyên dương
Biểu diễn số nguyên dương bởi phép nhị phân cũng tương tự sử dụng
hệ thống thập phân,với hệ thập phân thì số được biểu diễn bởi tổng các bội số của lũy thừa cơ số 10
Tiền tố 0b phía trước xác định chúng biểu diễn dưới hệ nhị phân
Điều bất lợi của số nhị phân so với hệ thập phân là sự biểu diễn 1 số thực đôi khi khá phức tạp ,nhất là với những con số cồng kềnh.Hệ thập lục phân thì ở mỗi ô số có thể có 16 giá trị ,gồm các số từ 0 đến 9 và các chữ cái từ
A đến F.hệ thập lục phân dùng tiền tố “ 0x” để phân biệt với hệ nhị phân và thập phân
Ví dụ 3
Biểu diễn số 47(10) sang hệ cơ số 2 và hệ cơ số 16
Trang 447 = 0b101111 = 0b00101111.0b0010 = 0x2, 0b1111 = 0xF, do đó, 47 = 0x2F
Hình 2.2 - Biểu diễn hệ cơ số 16
Trang 52.4 Phép tính số học trên số nguyên dương
Số học trong cơ số 2 (hệ nhị phân) có thể được thực hiện bằng cách sử dụng các kỹ thuật tương tự mà người sử dụng cho số học cơ sở cơ số 10 (hệ thập phân), trừ các thiết lập giới hạn của các giá trị có thể được đại diện bởi mỗi chữ
số Đây thường là cách dễ nhất cho con người để giải quyết vấn đề toán học liênquan đến số nhị phân, nhưng trong một số trường hợp các kỹ thuật này không thể được thực hiện dễ dàng các con số, thiết kế máy tính hàng đầu để lựa chọn triển khai thực hiện khác của hoạt động này Như chúng ta sẽ thấy trong các phần sau đây, cộng và phép nhân được thực hiện bằng cách sử dụng mạch được tương tự như kỹ thuật được sử dụng bởi con người trong việc làm số học
Bộ phận được thực hiện bằng cách sử dụng phương pháp máy tính cụ thể, và trừ được thực hiện khác nhau trên hệ thống khác nhau tùy thuộc vào các đại diện họ sử dụng cho các số nguyên âm
Ví dụ
Tính tổng của số 9 và 5 bằng cách sử dụng số nhị phân trong định dạng nhị
Trang 6phân 4-bit
Hướng dẫn
Các 4-bit đại diện nhị phân của 9 và 5 được 0b1001 và 0b0101, tương ứng Thêm các bit thấp, chúng ta nhận được 0b1 + 0b1 = 0b10, mà là một 0 ở bit thấpcủa kết quả, và thực hiện một số 1 vào vị trí bit tiếp theo Lặp lại cho tất cả các bit, chúng ta nhận được kết quả cuối cùng của 0b1110 Hình 2.3 dưới sẽ minh họa quá trình này
1 <====== Thực hiện các bit thấp ngoài
Đối với các loại bộ cộng mô tả ở trên, tốc độ của mạch được xác định bởi thờigian cần cho việc thực hiện các tín hiệu để truyền bá thông qua tất cả các
adders đầy đủ Về cơ bản, mỗi bộ cộng toàn không thể thực hiện một phần của
nó trong tính toán cho đến khi tất cả các tuyến tính đầy đủ với số bit trong các yếu tố đầu vào Nhà thiết kế đã phát triển mạch tốc độ này lên phần nào đó bằngcách thực hiện càng nhiều các bộ cộng đầy đủ nhất có thể trước khi đầu vào thực hiện có sẵn để giảm đi sự chậm trễ khi thực hiện trở lên có sẵn, hoặc bằng cách lấy một số bit đầu vào vào tài khaorn khi tạo mang, nhưng cơ kỹ thuật vẫn giữ nguyên
Trừ có thể được xử lý bằng phương pháp tương tự, bằng cách sử dụng các module tính toán 1 chút về sự khác biệt giữa hai con số Tuy nhiên, các định dạng phổ biến nhất cho các số nguyên âm, phương pháp bù hai, cho phép trừ
được thực hiện bằng cách phủ đầu vào thứ hai và trừ Bạn có thể tham khảo
thêm “ Phương pháp bù hai ” tại mục 2.5.2
2.4.2 Phép nhân
Trang 7Phép nhân không vận dụng hoàn toàn tương tự như cách mà người ta nhân hệ số thập phân.
Có 1 vấn đề với phép nhân số tự nhiên là tích của 2 số n-bit là nhiều hơn 2n bit.nhiều phép tính số học cũng sinh ra các kết quả không tương ứng như số bit đầu vao ,đó có thể là hiện tượng tràn trên hoặc tràn dưới,và nó
sẽ được bàn luận ở phần 2.4.4
Trong trường hợp nhân ,thì vấn đề đó là số bit bị tràn số là lớn tới mức mà nhà thiết kế máy càn dùng các phương pháp đặc biệt
Trang 8
Hình 2.4 – Bộ cộng 8-bit
Trang 9Hình 2.5 - Thuật giải BOOTH
Trang 102.4.3 Phép chia
Bộ phận có thể được thực hiện trên hệ thống máy tính bằng cách lặp đi lặp lại trừ đi số chia từ số bị chia và đếm số lần số chia có thể được trừ từ số bị chia trước khi chia số bị chia trở nên nhỏ hơn số chia Ví dụ, 15 có thể được chia số
bị chia bằng 5 bằng cách trừ đi 5 liên tục từ ngày 15, nhận được 10, 5, và 0 là kết quả trung gian Các thương, 3, là số bớt đó phải được thực hiện trước khi các kết quả trung gian trở nên ít hơn so với số bị chia
Trong khi nó sẽ có thể xây dựng phần cứng để thực hiện phân chia thông qua trừ lặp đi lặp lại, nó sẽ là không thực tế vì số lượng bớt yêu cầu
Ví dụ 231 ( một trong những số lớn hơn biểu diễn trong 32-bit số nguyên khôngdấu) chia cho 2 được 230 , có nghĩa là bớt 230 sẽ phải dduwwocj thực hiện để thực hiện phép trừ lặp đi lặp lại
Trên một hệ điều hành ở 1GHz, điều này sẽ mất khoảng 1 giây, đến nay còn hơn bất kỳ phép toán số học khác
Thay vào đó, các nhà thiết kế sử dụng phương pháp dựa trên bảng tra cứu thực hiện phân chia Sử dụng bảng Pre-generated (Vị trí phát sinh), các kỹ thuật này tạo ra 2-4 bit của thương trong mỗi chu kỳ Điều này cho phép 32-bit hoặc đơn vị số nguyên 64-bit được thực hiện trong một số hợp lý của chu kỳ, mặc dù
bộ phận thường là chậm nhất trong những hoạt động toán học cơ bản về máy tính
2.4.4 Tràn số / Tràn dưới
Những bit có lớn của máy tình được giới hạn trong khoảng số lớn nhất
và nhỏ nhất nó có thể biểu diễn như những số nguyên.với số thực không dấu ,1 số có n bit có thể biểu diễn giá trị tứ 0 tới 2n - 1.Tuy nhiên các phép tính số học trên số có thể đưa tới kết quả mà không thể biểu diễn tương
tự như định dạng ban đầu ví dụ như ,cộng 2 số thực n bit cí thể đưa ra kếtquả lên tới 2.(2n - 1), nó không thể biểu diễn trong n bit,và nó có thể kết quả
âm khi thực hiện phép trừ 2 số nguyên dương
Khi kết quả tính toán được không thể biểu diễn dưới dạng ban đầu của
nó , sự tràn trên hoặc sự tràn dưới thì gọi là đã xảy ra sự cố.khi xảy ra hiện tượng tràn trên có nghĩa là kết quả biểu diễn có số bít lớn hơn ban
đầu,còn tràn dưới thì ngược lại.mỗi hệ thống khác nhau thì xử lý vận dụng các sự cố trên theo các cách khác nhau Có 1 vài tín hiệu báo lỗi khi sự có trên xảy ra.cách khác lại thay thế kết quả sai với giá trị gần nhất với dạng ban đầu
Trang 112.5 Số nguyên âm
Để biểu diễn số nguyên âm dưới dạng một chuỗi liên tiếp các bit ,hàng các kí hiệu có giá trị biểu diễn cho các số nguyên dương phải được mở rộng để chỉ bất
cứ các số nguyên âm hay nguyên dương Chúng ta có 2 phương pháp để thực
hiện đó là phương pháp biểu diễn dấu lượng (Sign-Magniture ) và phương pháp
bù hai (Two's – Complement)
Ví dụ 1
16bit hệ nhị phân không dấu của 152 là 0b0000000010011000
Trong 16bit có dấu,
-152 sẽ được biểu diễn như sau: 0b1000000010011000
Như vậy,bit cuối cùng bên trái của biểu diễn là bit dấu
Biểu diễn dấu như vậy có thuận lợi là tạo được số âm rất dễ dàng cũng như đảo ngược dấu bit.sử dụng dấu là dễ dàng đối với phép nhân và chia tuy nhiên với phép cộng và trừ thì lại khó khăn hơn
Cộng lại sẽ cho kết quả là 0b10001110 là biểu diễn của -14 (không đúng)
2.5.1 Phương pháp Sign-Magniture (Biểu diễn dấu lượng)
Trong biểu diễn dấu lượng,các bít cao(hay còn gọi là các bit dấu ) của các số nhị phân ám chỉ bất cứ số nào đều là nguyên âm hoặc nguyên dương,và các số còn lại ám chỉ giá trị tuyệt đối của các số,sử dụng các dạng thức tương tự như
Trang 12đại điện nhị phân ko dấu.N -bit dấu lượng có thể biểu diễn sô lượng từ tới Chú
ý có 2 cách đại điẹn cho sô 0 trong biểu diễn dấu lượng đó là +0,-0
+0 là giá trị của 0 trong dấu lượng ở dạng bit dấu dương ,-0 là giá trị của 0 trong dấu lượng ở dạng bít dấu âm
Ví dụ
Bít 16 ko dấu hệ nhị phân đại điện cho 152 là trong hệ thống bít dấu số lượng , -152 biểu diễn thành các bit cực tả các con số là bít dấu,các số còn lạiđưa dưới dạng số lượng
Phương pháp biểu diễn dấu lượng có ưu điểm là có thể lấy âm của số một cách
dễ dàng đảo ngược lại bit dấu.Xác định bất cứ số nào là âm hay dương đều khá
dễ ,khi chỉ cần kiểm tra bit dấu Biểu diễn dấu lượng khá dễ để tiến hành nhân hay chia trên số dấu,nhưng hơi khó để tiến hành cộng hoặc trừ.Phần cứng có thể tiến hành đơn giản việc điều hành ko dấu trên các phần số lượng ko dấu củađầu vào và kiểm tra đầu vào của các bít dấu để xác định kết quả của các bít dấu
1000.Trong một hệ thống 16 bit không dấu-số 152 có thể biểu diễn như là 0b1000 0000 1001 1000.Ở đây,bit tận cùng bên trái của số là bit dấu, và phần còn lại là thể hiện độ lớn của số
Số nguyên có dấu thể hiện phủ định của 1 số điều đó rất đơn giản là chỉ đảo ngược dấu của bit.Xác định 1 số là có dấu hay không dấu là dễ dàng, chỉ yêu cầu về dấu,nhưng điều khó khăn là việc thực hiện cộng và trừ.Để nhân và chia, điều đơn giản có thể là thực hiện hoạt việc phần không dấu cho hệ thống đầu vào còn dấu và kiểm ta dấu vào để xác định dấu của kết quả
Cộng và trừ số nguyên có dấu yêu cầu tương đối phức tạp bởi vì
cộng(hay trừ) trong hệ nhị phân biểu diễn 1 số nguyên dương và hệ nhị phân biểu diễn số nguyên âm không được kết quả đúng.Thông thường phảitìm giá trị của dấu của địa chỉ đó khi mỗi địa chỉ của bit được xuất ra,và sự khác biệt là được yêu cầu để cộng và trừ mỗi phần.Thông thường khi đã hoàn thành là lý do tại sao nhiều dòng trong hệ thống được sử dụng biểu diễn ký hiệu dấu cho số nguyên
Trang 13@ Đối với phép cộng hay trừ :
Cộng lại sẽ cho kết quả là 0b10001110 là biểu diễn của -14 (không đúng)
Phương pháp dấu lượng dùng bit cực trái làm bít dấu (sign bit) – tức đại
diện cho dấu của số – theo quy ước: nếu bit dấu là 0 thì số là số dương (0 tương đương với dấu "+"), ngược lại, nếu nó là 1 thì số là số âm (1 tương đương với dấu "−") Các bit còn lại được dùng để biểu diễn độ lớn của số
(hay giá trị tuyệt đối – absolute value – của số).
Theo phương pháp này, một byte 8 bit sẽ có 7 bit (trừ đi bit dấu) được dùng
để biểu diễn cho các số có giá trị từ 0000000 (010) đến 1111111 (12710) Khi
sử dụng bit dấu, ý nghĩa của 7 bit trên sẽ thay đổi, và ta có thể biểu diễn
đối của nó (như −5 với +5) đều được biểu diễn theo cùng một cách ở 7 bit biểu diễn độ lớn Trong phương pháp dấu lượng, số 0 có thể được biểu diễn ở hai dạng, đó là 00000000 (+0) và 10000000 (−0)
biểu diễn sang hệ nhị phân là: 00000101, còn số −5 là 10000101
So sánh với cách biểu diễn số âm mà ta thường sử dụng, ta thấy phương pháp dấu lượng có nhiều điểm tương đồng Trong hệ thập phân, khi muốn biểu diễn số có dấu, ta đặt dấu cần biểu diễn ngay trước giá trị tuyệt đối của số Phương pháp dấu lượng cũng đặt dấu ngay trước giá trị tuyệt đối của số, chỉ có khác ở chỗ thay dấu "+" bằng "0" và "−" bằng "1" Có lẽ vì sự tương đồng này, một vài máy tính thế hệ đầu tiên (như IBM_7090) đã sử dụng phương pháp dấu lượng khi biểu diễn số âm
Trang 14Kết quả bình thường (12) = 0b00001100
Lấy nghịch đảo mỗi bit: 0b11110011
Cộng 1 0b11110100 (phần bù 2)
Thực hiện cộng +12 và -12 (0b00001100+0b11110100,kết quả
8 bit của phần bù 2,có 1 bit tràn ra ngoài được kết quả 0b00000000=0,kết quả được chấp nhận
Số bù 2 là định dạng hữu ích,điều đó giải thich tại sao chúng được sử dụngtrong hầu hết máy tính hiện đại
1 Dấu của 1 số có thể được xác định bởi sựu kiểm tra bit cao nhất của
biểu diễn đó.Số nguyên âm có 1 s ỏ bit cao nhất,số nguyên dương có 0s
2 Phủ định 1 số 2 lần đưuọc chính số đó
3 Số 0 chỉ có 1 cách biểu diễn(loại bỏ cần thiết để phân biệt +0 và -0
4 Hầu hết những điều quan trọng,phép cộng biểu diên của 1 số nguyên âm
và dương trong phần bù 2 được biểu diễn cho đúng kết quả.Trong phép cộng dể phân biệt sự đặng biệt,cần thiết cho xử lý cộng trong số nguyên âm,trừ có thể được tính toán lại như phép cộng bởi việc thực hiện tính ở phần bù 2 của phép trừ và phép công.điều cho thấy rằng việc biểu diễn phần bù 2 trong phép nhân (ví dụ 14-7 trở thành 14+(-17),thay dổi giá trị tính
Trong khi biểu diễn phần bù 2 có sự khác biệt trong biểu diễn số nguyê
có dấu Một vài điều đặc trưng của phần bù 2 là n bit số có thể biểu biễn
từ -2n-1 đến +2n-1 -1 Điều này không xác thực vơi thực tế rằng chỉ có 1 biểu diễn cho số 0 Dưới đây là 1 biểu diễn của 1 số số trước đây:
Trang 15Ví dụ 2
Cộng +3 và-4 trong hệ 4 bit (biểu diễn phầ bù 2)
Hướng dẫn
Biểu diễn 4 bit phần bù 2 của +3 và -4 là 0b0011 và 0b1100
Cộng vào đươc 0b1111,kết quả biểu diễn là phần bù 2 của -1
Cộng chúng lại ,được 0b11001(kết quả 5 bit, tràn trên)
Loại bỏ bit thứ 5 ,ko dùng để biểu diễn ,được 0b1001,kết quả là -7
Phép nhân của mã bù 2 phải tính toán nhiều hơn,vì ta phải thực hiện 1 phép nhân không dấu đơn giản trong mã bù 2 nhưng lại không cho ra kết quả như mong muốn.Khi ta thực hiện phép nhân, có thể thiết kế sao cho có thể thay đổi tất cả đầu vào của chúng để phù hợp và sử dụng dấu bít gốc
để thể hiện dấu của kết quả,nhưng điều này làm mất thể gian thực hiên từng phần của phép nhân.Thay vì,1 kỹ thuật gọi tất cả mã hóa,điều này ngoài vi phạm giáo trình này,còn được sử dụng nhanh chóng thay đổi định dạng mã bủ 2 để định dạng lại để dễ dàng thực hiện nhân
Như chúng ta nhìn thấy,cả 2 loại đều dùng số nguyên có dấu và mã bù 2
có điều lợi và có cái hại Mã bù 2 cho phép thực hiện đơn giản phép cộng
và phép trừ,trong khi đó số nguyên có dấu tạo điều kiện nhân và chia.bời vìcộng và trừ có nhiều điểm chung trong chương trình máy tính hơn nhân và chia,hầu như tất cả các máy tính đều có chọn lựa biểu diễn mã bù 2 cho số nguyên,sự cho phép chúng để “thực hiện các công việc trường hợp nhanh hơn”
Ngoài ra còn hiểu là một số trong hệ nhị phân là bù đúng (true
complement) của một số khác Một số bù 2 có được do đảo tất cả các bit có
trong số nhị phân (đổi 1 thành 0 và ngược lại) rồi thêm 1 vào kết quả vừa đạt được Thực chất, số biểu diễn ở dạng bù 2 là số biểu diễn ở bù 1 rồi sau đó cộng thêm 1
Chú ý :
Phương pháp bù 2 thường được sử dụng để biểu diễn số âm trong máy
tính Theo phương pháp này, bit cực trái (là bit nằm bên trái cùng của byte)