30/09/2018, 19:11

Chuyển từ nhị phân theo chuẩn IEEE 754/85 về số thực X

Ai giúp em hiểu cái chỗ M=1.m đó tính làm sao không ạ? Em đọc mà vướng mỗi chỗ đó thôi.

Đề: Nhập số dưới dạng chuẩn IEEE 754/85 chính xác đơn (32 bit):11000001010101100000000000000000

Giải
Mã vừa nhập:
11000001010101100000000000000000
Thao tác tính toán:
Dấu của X: Bit dấu s=1 => X là số âm
Phần mũ E : mã lệch e=100000102=13010
=> E=e-127=130-127=3
_Phần định trị M=1.m=1.101011=1.671875

viết 21:15 ngày 30/09/2018

float 32-bit thì chia làm
1 10000010 10101100000000000000000
1: dấu
10000010: số mũ (độ lớn)
10101100000000000000000: phần “thập phân” hiểu là phần sau dấu phẩy (dấu chấm).

ở hệ thập phân, 123456.789 được viết theo kiểu khoa học là 1.23456789 x 105, cách viết này là chỉ có số có 1 chữ số lớn hơn 0 đứng trước dấu phẩy (chấm), còn lại là phần sau dấu phẩy (mantissa) và số mũ (exponential). Với hệ thập phân thì số đứng trước dấu phẩy có thể là 1 trong 9 số từ 1 tới 9. Còn hệ nhị phân thì chỉ có 1 số là số 1, vì vậy ko cần lưu số này trong 32 bit kia.

Khi tìm giá trị thì ghép số 1 này vào đằng trước phần mantissa đó: 1.10101100000000000000000, tương tự trong hệ thập phân phần 000…0 có thể bỏ đi: 1.101011.
Với hệ thập phân 1.234 được tính là 1 x 100 + 2 x 10-1 + 3 x 10-2 + 4 x 10-3 thì hệ nhị phân tương tự:
1.101011 = 1 x 20 + 1 x 2-1 + 0 x 2-2 + 1 x 2-3 + 0 x 2-4 + 1 x 2-5 + 1 x 2-6
= 1 + 0.5 + 0.125 + 0.03125 + 0.015625 = 1.671875

bỏ thêm phần số mũ và dấu vào: -1.671875 x 23 = -13.375

Bài liên quan
0