JavaScript is required

Số dấu chấm động A được lưu trữ trong máy tính dưới dạng 32 bit sau: 11001001110100011110100000000000, hỏi số A nhận giá trị nào sau đây:

A.
– 0.1101000111101 x 29
B.
0.1101000111101 x 29
C.
– 0.1101000111101 x 27
D.
0.1101000111101 x 27
Trả lời:

Đáp án đúng: A


Số chấm động 32 bit theo chuẩn IEEE 754 được biểu diễn như sau: * **Bit dấu (1 bit):** Bit đầu tiên (trong trường hợp này là 1) cho biết dấu của số. 1 là âm, 0 là dương. * **Số mũ (8 bit):** 8 bit tiếp theo (10010011) biểu diễn số mũ. Ta cần chuyển đổi số này sang dạng số nguyên có dấu bằng cách trừ đi *bias* (127). Trong trường hợp này, 10010011 (147) - 127 = 20. * **Phần định trị (23 bit):** 23 bit còn lại (10100011110100000000000) biểu diễn phần định trị (mantissa). Trong biểu diễn dấu chấm động, phần định trị được chuẩn hóa sao cho có dạng 1.xxxxx. Do đó, phần định trị thực tế sẽ là 1.101000111101. Vậy, số A có thể được biểu diễn như sau: (-1)^1 * 1.101000111101 * 2^(20) Để đưa về dạng như các đáp án, ta cần dịch dấu phẩy sang trái một vị trí và điều chỉnh số mũ tương ứng: -0.1101000111101 x 2^21 Tuy nhiên, không có đáp án nào trùng khớp hoàn toàn. Có vẻ như có sự nhầm lẫn ở số mũ trong các đáp án, hoặc đề bài/đáp án có thể có sai sót. Số mũ đúng phải là 21, không phải 9 hay 7 như trong các đáp án đã cho. Vì không có đáp án đúng hoàn toàn, ta chọn đáp án gần đúng nhất, xét về phần định trị. Các đáp án A, B, C, D đều có chung phần định trị là 0.1101000111101. Tuy nhiên, chỉ có A và C mang dấu âm, phù hợp với bit dấu là 1. Giữa A và C, A có số mũ gần đúng hơn với kết quả tính toán (mặc dù vẫn sai). Do đó, dựa trên sự suy luận và loại trừ, ta có thể nói đáp án A là *gần đúng nhất*, mặc dù số mũ không chính xác.

Câu hỏi liên quan