Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
158 KB
Nội dung
Số âm máy tính Trong tốn học, số âm (bất kể thuộc hệ số nào) biểu diễn cách thông thường đặt trước số dương tương ứng dấu "−" (trừ) Ví dụ: với hệ thập phân, số nguyên âm năm biểu diễn −5 Tuy nhiên, máy tính, ký hiệu, số, biểu diễn hệ nhị phân thông qua hai chữ số chuyện lại trở nên phức tạp Có nhiều cách sử dụng để biểu diễn số âm máy tính Bài giới thiệu bốn phương pháp chủ yếu nhất, là: phương pháp dấu lượng (sign-and-magnitude), bù 1, bù số N (excess-N) Các máy tính hầu hết sử dụng phương pháp biểu diễn số bù Tuy nhiên, vài tình huống, phương pháp khác sử dụng Dấu lượng Phương pháp dấu lượng dùng bit cực trái làm bit dấu (sign bit) – tức đại diện cho dấu số – theo quy ước: bit dấu số số dương (0 tương đương với dấu "+"), ngược lại, số số âm (1 tương đương với dấu "−") Các bit lại dùng để biểu diễn độ lớn số (hay giá trị tuyệt đối – absolute value – số) Theo phương pháp này, byte bit có bit (trừ bit dấu) dùng để biểu diễn cho số có giá trị từ 0000000 (0) đến 1111111 (127) Khi sử dụng bit dấu, ý nghĩa bit thay đổi, ta biểu diễn số từ −127 đến +127 Phương pháp làm cho số âm lẫn trị tuyệt đối (như −5 với +5) biểu diễn theo cách bit biểu diễn độ lớn Trong phương pháp dấu lượng, số biểu diễn hai dạng, 00000000 (+0) 10000000 (−0) Dấu lượng –Ví dụ Ví dụ: giả sử mẫu bit, sử dụng phương pháp dấu lượng, số biểu diễn sang hệ nhị phân là: 00000101, số −5 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, muốn biểu diễn số có dấu, ta đặt dấu cần biểu diễn trước giá trị tuyệt đối số Phương pháp dấu lượng đặt dấu trước giá trị tuyệt đối số, có khác chỗ thay dấu "+" "0" "−" "1" Có lẽ tương đồng này, vài máy tính hệ (như IBM 7090) sử dụng phương pháp dấu lượng biểu diễn số âm Phương pháp bù Phương pháp bù biểu diễn số âm theo cách sau: Thứ nhất, bit dấu số số dương, số số âm Thứ hai, sử dụng toán tử thao tác bit (bitwise) NOT để đảo tất bit số nhị phân dương (dĩ nhiên khơng tính bit dấu) để biểu diễn số âm tương ứng Như vậy, phương pháp bù hoàn toàn giống phương pháp dấu lượng, khác cách biểu diễn độ lớn số Ví dụ: dạng bù 00101011 (43) 11010100(−43) ( xem bù để biết cách biểu diễn số thập phân sang nhị phân phương pháp bù 1) Giống phương pháp dấu lượng, byte bit áp dụng phương pháp bù biểu diễn số từ −127 đến +127 (chú ý: bit dùng làm bit dấu) Bù có hai dạng biểu diễn cho số 0, bao gồm: 00000000 (+0) 11111111 (−0) (mẫu bit) Bù ( tt) Khi thực phép cộng hai số biểu diễn theo phương pháp bù 1, ta thực theo quy tắc cộng nhị phân thông thường, nhiên, sau thực xong, cịn phát sinh bit nhớ phải tiếp tục cộng bit nhớ vào kết vừa thu Về vấn đề này, xin xem thêm bù Phương pháp biểu diễn số bù sử dụng rộng rãi hệ máy tính cũ, điển hình dịng máy PDP-1 UNIVAC 1100/2200 Bù (tt) Bù (tiếng Anh: one's complement) số hệ nhị phân mà bù số trừ (radix-minus-1 complement) số khác Một số bù có đảo tất bit có số nhị phân (đổi thành ngược lại) Bên cạnh phương pháp bù 2, bù thường sử dụng để biểu diễn số âm máy tính Theo phương pháp này, bit cực trái (là bit nằm bên trái byte) sử dụng làm bit dấu (sign bit - bit tượng trưng cho dấu số) với quy ước: bit dấu số số dương, cịn số số âm Ngồi bit dấu ra, bit cịn lại dùng để diểu diễn độ lớn số Ví dụ: số −5 biểu diễn máy tính theo phương pháp bù sau (với mẫu bit): đầu tiên, xác định số biểu diễn máy tính: 0000 0101 Tiếp theo, đảo tất bit có số 5: kết sau đảo: 1111 1010 Vì biểu diễn số âm nên bit bên trái giữ Vậy với phương pháp bù 1, số −5 biểu diễn máy tính sau: 1111 1010 Bù (tt) Khi thực phép tính cộng với số âm biểu diễn theo phương pháp bù 2, ta thực phép cộng nhị phân bình thường Trong trường hợp thực phép cộng đến bit cực trái mà phát sinh bit nhớ ta cộng tiếp bit nhớ vào kết vừa nhận Ví dụ: Cộng hai số thập phân −5 với (mẫu bit): Ví dụ 1111 1010 (số bù −5) + 0000 0010 (số hệ nhị phân) =========== 1111 1100 (số bù −3) Công bù với bits Cộng hai số thập phân −5 với −7 (mẫu bit): 1111 1010 (số bù −5) + 1111 1000 (số bù −7) =========== 1111 0010 (còn nhớ 1) + (cộng tiếp với bit nhớ) =========== 1111 0011 (số bù −12) Ví dụ Ta thấy: cộng hai bit cực trái hai số 1111 1010 1111 1000, ta kết 1111 0011 cịn nhớ 1, đó, ta tiếp tục cộng bit nhớ vào kết vừa nhận để kết cuối Bù tràn số Xét trường hợp ta có hai số âm −5 −6 hệ thập phân Biểu diễn nhị phân phương pháp bù với mẫu bit hai số 1010 1001 Giả sử, bây giờ, ta cần cộng hai số Ta thực phép cộng: Bù tràn số (tt) 1010 (số bù −5) + 1001 (số bù −6) ====== 0011 (còn nhớ 1) + ====== 0100 Ta thấy, kết nhận 0100 Nếu đổi hệ thập phân, số nguyên dương −11 mong đợi Vấn đề gọi tràn số Nó xảy ta lấy số lượng bit để biểu diễn (như ví dụ mẫu bit) Bù Trong phương pháp bù 2, số âm biểu diễn giống phương pháp bù 1, nhiên, phải cộng thêm vào kết (ở hệ nhị phân) Ví dụ: số −5 biểu diễn sang hệ nhị phân (xét mẫu bit) sử dụng phương pháp bù 11111010 Để biểu diễn theo phương pháp bù 2, ta cộng thêm vào số nhị phân bù 1, tức cộng cho 11111010: 11111010 + = 11111011 Vậy 11111011 biểu diễn bù −5 máy tính Phương pháp biểu diễn số bù đời người ta gặp vấn đề với hai phương pháp dấu lượng bù 1, là: Có hai cách biểu diễn cho số Bit nhớ phát sinh sau thực phép tính phải cộng tiếp vào kết Bù (tt) Với phương pháp bù 2, số có cách biểu diễn 00000000 (mẫu bit) Việc đổi dấu số – kể từ âm sang dương hay từ dương sang âm – thực theo cách, là: đảo tất bit cộng thêm vào kết Việc thực phép cộng với số biểu diễn theo phương pháp bù thực hoàn tồn giống cộng hai số nhị phân bình thường, nhiên, phát sinh bit nhớ bit dấu, ta bỏ Về vấn đề này, xin xem thêm bù Với mẫu bit, phương pháp bù biểu diễn tốt số nguyên có giá trị từ −128 đến +127 (so với từ −127 đến +127 theo phương pháp dấu lượng bù 1) lợi từ việc tiết kiệm cách biểu diễn số (không phân biệt −0 +0) Bù (tt) Bù (tiếng Anh: two's complement) số hệ nhị phân bù (true complement) số khác Một số bù có đảo tất bit có số nhị phân (đổi thành ngược lại) thêm vào kết vừa đạt Thực chất, số biểu diễn dạng bù số biểu diễn bù sau cộng thêm Phương pháp bù thường sử dụng để biểu diễn số âm máy tính Theo phương pháp này, bit cực trái (là bit nằm bên trái byte) sử dụng làm bit dấu (sign bit - bit tượng trưng cho dấu số) với quy ước: bit dấu số số dương, cịn số số âm Ngồi bit dấu ra, bit cịn lại dùng để diểu diễn độ lớn số Ví dụ Ví dụ: số nguyên −5 hệ thập phân biểu diễn máy tính theo phương pháp bù sau (với mẫu bit): Bước 1: xác định số nguyên hệ thập phân biểu diễn máy tính là: 0000 0101 Bước 2: đảo tất bit nhận bước Kết sau đảo là: 1111 1010 Bước 3: cộng thêm vào kết thu bước 2: kết sau cộng: 1111 1011 Bước 4: biểu diễn số âm nên bit bên trái giữ Vậy với phương pháp bù 2, số −5 hệ thập phân biểu diễn máy tính sau: 1111 1011 Ngoài cách làm theo định nghĩa ra, ta cịn áp dụng phương pháp bù theo quy tắc sau: với biểu diễn nhị phân số dương cho trước, để biểu diễn số âm tương ứng, ta bắt đầu tìm từ phải sang trái gặp bit có giá trị Khi gặp bit này, ta đảo tất bit từ kề trước (tức trước bit có giá trị vừa nói tới) bit cực trái, nhớ: bit cực trái Ví dụ: ta biểu diễn lại số nguyên −5 hệ thập phân sang hệ nhị phân theo quy tắc (giả sử với mẫu bit): Bước 1: xác định số nguyên hệ thập phân biểu diễn máy tính là: 0000 0101 Bước 2: bắt đầu tìm (từ phải qua trái) bit có giá trị 1, ta thấy, bit thứ (tính từ phải qua) Bước 3: đảo tất bit nằm trước bit thu bước Kết nhận được: 1111 1011 Bước 4: biểu diễn số âm nên bit bên trái giữ Vậy số −5 hệ thập phân biểu diễn máy tính theo phương pháp bù là: 1111 1011 (hồn tồn giống kết ví dụ trên) Thực phép cộng với số bù Khi thực phép tính cộng với số âm biểu diễn theo phương pháp bù 2, ta thực phép cộng nhị phân bình thường, nhiên, trường hợp thực phép cộng đến bit cực trái mà phát sinh bit nhớ ta bỏ bit nhớ Ví dụ: Cộng hai số thập phân −5 với (mẫu bit): Ví dụ Ví dụ: Cộng hai số thập phân −5 với (mẫu bit): 1111 1011 (số bù −5) + 0000 0010 (số hệ nhị phân) =========== 1111 1101 (số bù −3) Ví dụ Cộng hai số thập phân −5 với −7 (mẫu bit): 1111 1011 (số bù −5) + 1111 1001 (số bù −7) =========== 1111 0100 (số bù −12) Tràn Số Xét trường hợp ta có hai số âm −6 −4 hệ thập phân Biểu diễn nhị phân phương pháp bù với mẫu bit hai số 1010 1100 Giả sử, bây giờ, ta cần cộng hai số Ta thực phép cộng: Tràn số (tt) 1010 (số bù −6) + 1100 (số bù −4) ====== 0110 Ta thấy, kết nhận 0110 Nếu đổi hệ thập phân, số nguyên dương −10 mong đợi